当前位置: 首页 > news >正文

MacOS安装Miniforge、Tensorflow、Jupyter Lab等(2024年最新)

大家好,我是邵奈一,一个不务正业的程序猿、正儿八经的斜杠青年。
1、世人称我为:被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员…
2、这几年,我整理了很多IT技术相关的教程给大家,爱生活、爱分享。
3、如果您觉得文章有用,请收藏,转发,评论,并关注我,谢谢!
博客导航跳转(请收藏):邵奈一的技术博客导航
| 公众号 | 微信 | CSDN | 掘金 | 51CTO | 简书 | 微博 |


教程目录

  • 0x00 教程内容
  • 0x01 下载安装并配置Miniforge
        • 1. 下载并安装Miniforge
        • 2. 配置Miniforge
  • 0x02 安装Tensorflow
        • 1. 创建虚拟环境
        • 2. 安装Tensorflow
        • 3. 测试Tensorflow
  • 0x03 安装Jupyter Lab
        • 1. 安装依赖
        • 2. 测试Jupyter Lab
        • 3. 一个尝试
  • 0xFF 总结

0x00 教程内容

  1. 本教程配置

苹果电脑配置如下:

  • M1 Max
  • 系统版本13.0 (22A380)

但是我觉得问题不大,主要还是看我的教程。

  1. 安装Miniforge、Tensorflow、Jupyter Lab

我现在需要安装Anaconda,但是我这里直接使用了Miniforge替代,然后安装Tensorflow、Jupyter Lab等,除了我总结我的搭建过程,还会在文章最后附带上一些有意义的参考链接。

0x01 下载安装并配置Miniforge

1. 下载并安装Miniforge

https://github.com/conda-forge/miniforge下载 Miniforge3-MacOSX-arm64。如下图:
在这里插入图片描述

下载完后,直接在终端执行以下命令安装Miniforge:

bash Miniforge3-MacOSX-arm64.sh

其实还是比较顺利的,安装完后,Python的版本会被默认使用新安装Python版本,可以执行查看。

2. 配置Miniforge

(1)配置环境变量

接着,可以配置一下环境变量,我是配置在~/.bash_profile

export MINIFORCE_HOME=/Users/shaonaiyi/app/miniforge3
export PATH=$MINIFORCE_HOME/bin:$PATH

(2)添加国内镜像源

配置命令如下:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

查看镜像源:

conda config --show channels

如果配置正确,可以看得到刚刚配置上的镜像源。

说明:若在本文以后的配置中,有些地方网速还是慢,开启“全局模式”可解决。

conda config --set show_channel_urls yes

0x02 安装Tensorflow

1. 创建虚拟环境
# 创建名为“tf”的虚拟环境:
conda create -n tf python=3.9.7
# 激活虚拟环境:
conda activate tf

删除上述虚拟环境的命令为(此命令不需要执行):

conda remove -n tf --all
2. 安装Tensorflow

在虚拟机中执行如下命令安装:

python -m pip install tensorflow
python -m pip install tensorflow-metal

注意:新版本里第一行是 tensorflow ,不是 tensorflow-macos

3. 测试Tensorflow

安装好后,运行如下代码:

import tensorflow as tfcifar = tf.keras.datasets.cifar100
(x_train, y_train), (x_test, y_test) = cifar.load_data()
model = tf.keras.applications.ResNet50(include_top=True,weights=None,input_shape=(32, 32, 3),classes=100,)loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
model.compile(optimizer="adam", loss=loss_fn, metrics=["accuracy"])
model.fit(x_train, y_train, epochs=5, batch_size=64)

最好一行一行粘贴。

如果环境没有问题,结果如下:

Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> cifar = tf.keras.datasets.cifar100
>>> (x_train, y_train), (x_test, y_test) = cifar.load_data()
Downloading data from https://www.cs.toronto.edu/~kriz/cifar-100-python.tar.gz
169001437/169001437 [==============================] - 37s 0us/step
>>> model = tf.keras.applications.ResNet50(
...     include_top=True,
...     weights=None,
...     input_shape=(32, 32, 3),
...     classes=100,)
2024-01-10 14:54:28.725324: I metal_plugin/src/device/metal_device.cc:1154] Metal device set to: Apple M1 Max
2024-01-10 14:54:28.725346: I metal_plugin/src/device/metal_device.cc:296] systemMemory: 64.00 GB
2024-01-10 14:54:28.725351: I metal_plugin/src/device/metal_device.cc:313] maxCacheSize: 24.00 GB
2024-01-10 14:54:28.725396: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:306] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.
2024-01-10 14:54:28.725429: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:272] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)
>>>
>>> loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
>>> model.compile(optimizer="adam", loss=loss_fn, metrics=["accuracy"])
>>> model.fit(x_train, y_train, epochs=5, batch_size=64)
Epoch 1/5
2024-01-10 14:54:31.761634: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:117] Plugin optimizer for device_type GPU is enabled.
782/782 [==============================] - 55s 57ms/step - loss: 4.7738 - accuracy: 0.0716
Epoch 2/5
782/782 [==============================] - 41s 53ms/step - loss: 4.2306 - accuracy: 0.1250
Epoch 3/5
782/782 [==============================] - 43s 55ms/step - loss: 3.7030 - accuracy: 0.1791
Epoch 4/5
782/782 [==============================] - 42s 54ms/step - loss: 3.3660 - accuracy: 0.2270
Epoch 5/5
782/782 [==============================] - 43s 55ms/step - loss: 3.1421 - accuracy: 0.2694
<keras.src.callbacks.History object at 0x2944ad730>

0x03 安装Jupyter Lab

1. 安装依赖

安装必须的包(此处,我是在虚拟环境中执行):

conda install libjpeg
conda install -y matplotlib jupyterlab

注意: libjpeg 是 matplotlib 需要依赖的库。

执行以下命令:

pip install -U --force-reinstall charset-normalizer 

使用 pip 强制重新安装charset-normalizer包,即使它已经是最新版本。
(1) --force-reinstall : 这个选项会强制重新安装包,即使该包已经是最新的。这有时在某些情况下是有用的,例如当包的安装有问题或损坏时。
(2) -charset-normalizer 是一个用于字符编码归一化的Python库,它可以将文本转换为UTF-8格式,确保在不同编码之间的一致性。

conda install ipykernel //安装ipykernel
sudo python -m ipykernel install --name tf //在ipykernel中安装当前环境
2. 测试Jupyter Lab

装好后,就可以直接执行:

jupyter lab

就可以进入notebook目录了,记得选择刚刚Kernel=> tf ,然后执行下面代码:

from tensorflow.keras import layers
from tensorflow.keras import models
import tensorflow as tf
import time begin_time = time.time()print(f"Running TensorFlow {tf.__version__} with {len(tf.config.list_physical_devices('GPU'))} GPUs recognized")model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
model.summary()from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5, batch_size=64)
test_loss, test_acc = model.evaluate(test_images, test_labels)
test_acc
end_time = time.time()print('Total time: {} s'.format(int(end_time-begin_time)))

执行后,如果没有报错,则应该是这样:
在这里插入图片描述
如果弹窗报错,可能是哪一步错误了,建议重新检查或者重装。

3. 一个尝试

安装好后,发现在哪各路径执行jupyter lab,新建的项目文件就会是在哪个路径。我尝试了以下步骤,发现还是无法修改(请不要根据下面教程操作):

修改/Users/shaonaiyi/app/miniforge3/envs/tf/lib/python3.9/site-packages/notebook_shim/tests/confs/jupyter_notebook_config.py文件,实际上是你的envs/tf/路径下的文件。
然后将c.ServerApp.notebook_dir 路径进行修改即可,我的如下:

c.ServerApp.notebook_dir = '/Users/shaonaiyi/my-workspace/jupyter'

注意:我的用户名为 shaonaiyi

发现不生效,说明虚拟环境是不支持这样改的,你可以直接去修改不是虚拟环境下的 jupyter_notebook_config.py 试试。会不会有惊喜呢?!

参考链接:

  1. Mac M1芯片安装miniAnaconda、Jupyter、TensorFlow环境
  2. MacBook M1配置Pytorch
  3. 可能遇到的错误:报错:Kernel Restarting The kernel for Untitled.ipynb appears to have died. It will restart automatical

0xFF 总结

  1. 我尝试过去限定TensorFlow的版本,比如设置成2.10,但是发现在装metal的时候报错了,因为找不到…所以,我最后干脆不加上版本,直接全部默认装就可以了。
  2. 关注我,学习更多大数据与人工智能知识。

邵奈一 原创不易,如转载请标明出处,教育是一生的事业。


相关文章:

MacOS安装Miniforge、Tensorflow、Jupyter Lab等(2024年最新)

大家好&#xff0c;我是邵奈一&#xff0c;一个不务正业的程序猿、正儿八经的斜杠青年。 1、世人称我为&#xff1a;被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员… 2、这几年&#xff0c;我整理了很多IT技术相关的教程给大家&#xff0…...

iOS 应用上架指南:资料填写及提交审核

摘要 本文提供了iOS新站上架资料填写及提交审核的详细指南&#xff0c;包括创建应用、资料填写-综合、资料填写-IOS App和提交审核等步骤。通过本指南&#xff0c;您将了解到如何填写正确的资料&#xff0c;并顺利通过苹果公司的审核。 引言 在开发iOS应用后&#xff0c;将其…...

车速预测 | Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 车速预测 | Matlab基于RBF径向基神经网络的车速预测模型&#xff08;多步预测&#xff0c;尾巴图&#xff09; 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复Matlab基于RBF径向基神经网络的车速预测模型…...

MySQL 5.7.35下载安装使用_忘记密码_远程授权

文章目录 MySQL 5.7.35下载安装使用_忘记密码_远程授权MySQL下载地址mysql安装点击安装&#xff0c;最好以管理员身份运行选择自定义安装选择64位勾选启动自定义产品执行点击同意点击下一步点击执行下一步配置数据库端口号设置登录密码&#xff0c;如果密码忘记&#xff0c;下面…...

openGauss学习笔记-194 openGauss 数据库运维-常见故障定位案例-分析查询语句长时间运行的问题

文章目录 openGauss学习笔记-194 openGauss 数据库运维-常见故障定位案例-分析查询语句长时间运行的问题194.1 分析查询语句长时间运行的问题194.1.1 问题现象194.1.2 原因分析194.1.3 处理办法 openGauss学习笔记-194 openGauss 数据库运维-常见故障定位案例-分析查询语句长时…...

GoLang:gRPC协议的介绍以及详细教程,从Protocol开始

目录 ​编辑 引言 一、安装相关Go语言库和相关工具 1. 安装Go 2. 安装Protocol Buffers Compiler 2.1 Windows 2.1.1 下载 2.1.2 解压 2.1.3 环境变量 2. macOS 3. Linux 4. 验证安装 3. 安装gRPC-Go 4. 安装Protocol Buffers的Go插件 二、定义服务 三、生成Go…...

LeetCode-2645. 构造有效字符串的最少插入数

给你一个字符串 word &#xff0c;你可以向其中任何位置插入 “a”、“b” 或 “c” 任意次&#xff0c;返回使 word 有效需要插入的最少字母数。 如果字符串可以由 “abc” 串联多次得到&#xff0c;则认为该字符串有效 。 示例 1&#xff1a; 输入&#xff1a;word “b” …...

ssm+vue的城投公司企业人事管理系统设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的城投公司企业人事管理系统设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#x…...

nginx基础面试题以及配置文件解析和命令控制

目录 1、nginx是什么 2、nginx的特点 3、为什么中国大陆有&#xff1a;百度、京东、新浪、网易、腾讯、淘宝等这么多用户使用nginx 4、nginx 的内部技术架构 上一期我们配置安装了nginx接着讲一下nginx配置文件的解析和nginx 命令控制 感谢观看&#xff01;希望能够帮助到…...

全自动网页生成系统网站源码重构版

源码优点: 所有模板经过精心审核与修改&#xff0c;完美兼容小屏手机大屏手机&#xff0c;以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 免费制作 为用户使用方便考虑&#xff0c;全自动网页制作系统无需繁琐的注册与登入&#xff0c;直…...

【算法每日一练]-动态规划 (保姆级教程 篇16) #纸带 #围栏木桩 #四柱河内塔

目录 今日知识点&#xff1a; 计算最长子序列的方案个数&#xff0c;类似最短路径个数问题 四柱河内塔问题&#xff1a;dp[i]min{ (p[i-k]f[k])dp[i-k] } 纸带 围栏木桩 四柱河内塔 纸带 思路&#xff1a; 我们先设置dp[i]表示从i到n的方案数。 那么减法操作中&#xff…...

Grounding 模型 + SAM 报错

引入 Grounding 目标检测模型串联 SAM 从而实现实例分割任务&#xff0c;目前支持 Grounding DINO 和 GLIP 参考教程 MMDetection-SAM 如果是 Grounding DINO 则安装如下依赖即可 cd playground pip install githttps://github.com/facebookresearch/segment-anything.git pip…...

linux 网络基础配置

将Linux主机接入到网络&#xff0c;需要配置网络相关设置一般包括如下内容&#xff1a; 主机名 iP/netmask (ip地址&#xff0c;网关) 路由&#xff1a;默认网关 网络连接状态 DNS服务器 &#xff08;主DNS服务器 次DNS服务器 第三个DNS服务器&#xff09; 一、…...

leetcode-相同的树

100. 相同的树 使用递归的方法 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def isSameTree(self, p: …...

Leetcode17-好数对的数目(1512)

1、题目 给你一个整数数组 nums 。 如果一组数字 (i,j) 满足 nums[i] nums[j] 且 i < j &#xff0c;就可以认为这是一组 好数对 。 返回好数对的数目。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,1,1,3] 输出&#xff1a;4 解释&#xff1a;有 4 组好数对&am…...

Ubuntu22.04开机左上角下划线闪烁不开机

按下CtrlAltF2&#xff0c;打开TTY系统&#xff0c;然后通过用户名和密码登录&#xff0c;随后使用 sudo apt --fix-broken install 根据提示排除错误信息&#xff0c;然后使用apt安装lightdm安装就行。 tips:当使用EasyConnect的时候&#xff0c;你可能参考了下面这篇文章知…...

提升测试多样性,揭秘Pytest插件pytest-randomly

大家可能知道在Pytest测试生态中&#xff0c;插件扮演着不可或缺的角色&#xff0c;为开发者提供了丰富的功能和工具。其中&#xff0c;pytest-randomly 插件以其能够引入随机性的特性而备受欢迎。本文将深入探讨 pytest-randomly 插件的应用&#xff0c;以及如何通过引入随机性…...

C++学习笔记(三十二):c++ 堆内存与栈内存比较

本节对堆和栈内存进行描述。 应用程序启动后&#xff0c;操作系统将整个程序加载到内存&#xff0c;分配相应的物理ram&#xff0c;确保程序可以正常运行。堆和栈是ram中存在的两个区域。栈通常是一个预定义大小的内存区域&#xff0c;一般是2M字节左右。堆也是预定了默认值的…...

探索Shadowsocks-Android:保护你的网络隐私

探索Shadowsocks-Android&#xff1a;保护你的网络隐私 I. 引言 在数字时代&#xff0c;网络隐私和安全变得愈发重要。我们越来越依赖互联网&#xff0c;但同时也面临着各种网络限制和监控。在这个背景下&#xff0c;Shadowsocks-Android应用程序应运而生&#xff0c;为用户提…...

蓝桥杯练习题(二)

&#x1f4d1;前言 本文主要是【算法】——蓝桥杯练习题&#xff08;二&#xff09;的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 …...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...