这是奔跑的键盘侠的第193篇文章
作者|我是奔跑的键盘侠
来源|奔跑的键盘侠(ID:runningkeyboardhero)
转载请联系授权(微信ID:ctwott)
之前写过一帖《macOS M1如何配置机器学习环境》,是基于python3.8版本配置的tensorflow,最近实验过程中发现些问题没办法解决,无奈之下卸载了重装,结果随便捣鼓一下,整个假期就快没了
至于为什么这么点背,,可能还是因为学的多了,用的模块也多了,烦恼就随之而来了。年初安装时啥都没学,就是一个试验代码通了就通了,后来随着学习的深入,发现要用到很多模块,关键嘛,这个M1设备据说python3.9更适配一些,心理也有在作祟。
之前就是装了3.8和3.9混用,实在搞不懂为毛有些模块在我M1的3.8版本死活装不上,3.9就服服帖帖。但是要跑tensorflow的话又只能滚回3.8,之前没有交叉就瞎玩,最近偶遇交叉直接死菜。
总之,恼火!
1
.condarc文档
如果不慎遭遇conda无法正常使用,可能要修改.condarc文档:
网上链接:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
代码语言:javascript复制channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
2
python3.8安装tensorflow新方法
代码语言:javascript复制《21年3月最新版在Macbook M1芯片上装Tensorflow》 https://zhuanlan.zhihu.com/p/358341761 Frendo, 知乎
确保执行了如下语句安装了Macbook 自带的python3.8
xcode-select --install
使用如下命令从GitHub拉取最新版的Tensorflow
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/apple/tensorflow_macos/master/scripts/download_and_install.sh)"
安装好后以后每次输入如下命令都可以进入venv环境了(注意下方命令z红的aaaa请改成自己的用户名)
."/Users/aaaa/tensorflow_macos_venv/bin/activate"
3
python3.9安装tensorflow方法
代码语言:javascript复制《Tensorflow 2.5 on Apple M1》 https://github.com/ctrahey/m1-tensorflow-config Chris Trahey,Github
Steps to recreate this environment:
conda create --name tf25 --file ./conda-explicit.txt
conda activate tf25
pip install --no-deps -r requirements.txt
python confirm.py
This is the output I get:
Init Plugin
Init Graph Optimizer
Init Kernel
Running TensorFlow 2.5.0 with 1 GPUs recognized
PS:本人mac版本11.6
按《requirements.txt》中numpy版本1.21.1安装后,出现部分异常问题,于是给卸载重新安装了1.21.2版本,问题得以解决。
另外,部分模块无法使用conda安装,找不到资源,改用pip安装,问题可解决。
opencv-python无法正常安装,又是捣鼓了好一阵。。最后改用opencv_python连接线改下划线就哦了,真实狗血的
4
python3.8-tensorflow0.1a1 PK python3.9-tensorflow2.5
跟网上大佬讲的一样,python3.8版本的速度要快,而且快很多。。原因不明
测试代码如下:
代码语言:javascript复制#test01.py
import tensorflow as tf
import time
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
start = time.time()
model.fit(x_train, y_train, epochs=5)
end = time.time()
model.evaluate(x_test, y_test)
print(end - start)
第一张图是python3.8耗时不到4s,第二张图是python3.9耗时近35s,对比实在悬殊。
。
于是换一个之前的多层感知机代码跑一下,python3.8耗时22s,python3.9耗时39s,还是3.8版本完胜。
这就有些让人困顿了,不知道是算法没跟M1适配好,还是测试的代码不具有代表性。当然这些都不是很重要,并不值得去深究,毕竟个人电脑这点配置是无法胜任真正的大任务。
5
python3.8 PK python3.9
最后,关于conda在pycharm Interpreter的配置,是要在设置里面的第三个选项System Interpreter来设置。实际项目中,可随意切换版本:
-END-