需要miniforge3,如以前环境较乱,最好是删除自己装过的miniforge3环境重装。
1.1. 删除已有环境
cd ~
rm -rf ~/miniforge3
rm -rf .conda
rm -rf .condarc
完成后,进入 .zshrc ,gg 将末端配置 miniforge3 的 PATH 配置删除。
1.2. 下载 Miniforge3_MacOS_ARM64 选择 Miniforge3-MacOSX-arm64
chmod +x ~/Miniforge3-MacOSX-arm64.sh
sh ~/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate
conda --version
#conda 23.3.1
- 按提示装, 并确保.bash_profile文件配置了miniforge3的 – 这步我没操作,也没有什么影响
- 安装路径一定要在~/miniforge3, 不然可能有权限问题
vim ~/.bash_profile
export PATH="/{user_home}/miniforge3/bin:$PATH"
source $HOME/.bash_profile
1.3. 创建一个conda环境
# 3.8和3.9都可以,pytorch需要3.9, 我这里安装了3.9版本
conda create -n tf26 python==3.9
conda create -n tf26 python==3.8
完成以上的准备后,才正式开始安装tensorflow,可安装tensorflow2.5/2.6,并且不需要再去github下载安装包。
Tensorflow需要安装的三个包是tensorflow-deps、tensorflow-macos、tensorflow-metal。其中前两个是必须的,tensorflow-metal是让tensorflow能用上Apple Silicon芯片的GPU。
一个官网都没告诉你的关键来了,这三个包必须严格安装对应的版本!具体的版本要关注官方安装文档最后的Releases表格。比如说,目前正式发布的tensorflow-macos是v2.9,那么同步安装的tensorflow-deps必须是v2.9、tensorflow-metal必须是v0.5.0,否则后面运行过程会报错失败。
详细步骤参考: apple开发者官网
2.1. 切换到自己的conda环境
conda activate tf26
2.2. 安装tensorflow
未安装过的安装tensorflow依赖包,安装过的需要卸载旧版。这里我没有安装过,所以继续往下走:
# 指定定版本安装
conda install -c apple tensorflow-deps==2.6.0
2.3. 安装tensorflow
# 会有个报错, 自己安装下 pip install torch 然后再重新执行一遍
python -m pip install tensorflow-macos
2.4. 安装tensorflow-metal
python -m pip install tensorflow-metal
进入python终端查看是否能导入tensorflow
python
>>> import tensorflow as tf
>>> tf.version
<module 'tensorflow._api.v2.version' from '/Users/lianggao/miniforge3/envs/tf/lib/python3.10/site-packages/tensorflow/_api/v2/version/__init__.py'>
参考:
https://zhuanlan.zhihu.com/p/474212619
https://www.readern.com/install-tensorflow-on-apple-silicon-macbook.html
1.创建一个python项目,或新的python模块
2.添加interpreter
指定miniforge3的pyhthon位置
import tensorflow as tf
# helloworld 使用 TensorFlow 创建一个常量 op,这个 op 作为节点被添加到默认图。
# 这个值被创建者返回并显示在输出中。
hello = tf.constant('Hello, TensorFlow!')
# Start tf session
sess = tf.Session()
# Run the op
print(sess.run(hello))
报错1
Traceback (most recent call last):
File "/Users/lianggao/MyWorkSpace/001-360/001project-360/py_practise/tensflow-demo/tensflow_2.py", line 10, in <module>
sess = tf.Session()
AttributeError: module 'tensorflow' has no attribute 'Session'. Did you mean: 'version'?
原因是:我们引用的TensorFlow2.0版本,此版本与1.0相比没有模块Session。
这样修改:
sess = tf.Session()
#====>
sess = tf.compat.v1.Session()
报错2:
File "/Users/lianggao/miniforge3/lib/python3.10/site-packages/tensorflow/python/client/session.py", line 1118, in _run
raise RuntimeError('The Session graph is empty. Add operations to the '
RuntimeError: The Session graph is empty. Add operations to the graph before calling run().
问题产生的原因:无法执行sess.run()的原因是tensorflow版本不同导致的,tensorflow版本2.0无法兼容版本1.0.
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
hello = tf.constant('Hello, TensorFlow!')
# Start tf session
sess = tf.compat.v1.Session()
# Run the op
print(sess.run(hello))
输出
---
b'Hello, TensorFlow!'
---