MacOS(M1芯片?arm架構(gòu))下安裝tensorflow的詳細(xì)過(guò)程
導(dǎo)語(yǔ)
由于目前anconda官網(wǎng)上對(duì)于macos系統(tǒng)只支持X86結(jié)構(gòu)的,因此基于arm結(jié)構(gòu)的MacOS暫時(shí)無(wú)法使用anconda來(lái)對(duì)tensorflow進(jìn)行配置。雖然Anconda無(wú)法在M1上運(yùn)行,但是相應(yīng)的替代品有Miniforge,同樣也能實(shí)現(xiàn)類似的效果。此外,蘋果官方稱還支持添加metal插件,從而可以調(diào)用集成在M1芯片中的GPU部分,但是目前只支持tensorflow2.5和2.6的版本,而本節(jié)使用使用的版本是tensorflow2.4 python3.8,因此并未安裝加速插件。官方安裝metal方法如下:
Tensorflow Plugin - Metal - Apple Developer
下面將開(kāi)始講解在Mac(M1)上如何安裝tensorflow
1. 下載Miniforge3-MacOSX-arm64.sh腳本文件,并且運(yùn)行
miniforge下載地址為GitHub - conda-forge/miniforge: A conda-forge distribution.
我的Miniforge3-MacOSX-arm64.sh腳本文件所安裝的路徑是
/Users/xiewenhui/MiniforgeShell/Miniforge3-MacOSX-arm64.sh
我們打開(kāi)終端terminal,首先進(jìn)入文件夾,進(jìn)入到Miniforge3-MacOSX-arm64.sh所在的文件夾
cd ~xiewenhui cd MiniforgeShell
運(yùn)行腳本文件
sh Miniforge3-MacOSX-arm64.sh
結(jié)果如下圖所示,然后一直進(jìn)行enter回車,直到需要你手動(dòng)輸入yes或者no的地方,對(duì)于選擇yes或者no的問(wèn)題,一律輸入yes,然后一直回車直到結(jié)束。
運(yùn)行成功圖如下所示,代表Miniforge3-MacOSX-arm64.sh運(yùn)行完成,此時(shí)會(huì)在以用戶名命名的文件夾下(此處我的文件夾是xiewenhui)生成一個(gè)Miniforge3文件夾,代表腳本運(yùn)行完畢后所生成的安裝文件(我們把Miniforge3當(dāng)作anconda一樣的包管理器,其中會(huì)包含python和conda,因此conda不需要再另外安裝)。
2. 創(chuàng)建虛擬環(huán)境
(1)用conda創(chuàng)建一個(gè)虛擬環(huán)境,同時(shí)設(shè)置python版本
下面tensorflow是我創(chuàng)建的虛擬環(huán)境名,當(dāng)然也可以寫(xiě)成tf24等等
conda create -n 虛擬環(huán)境名稱 python=版本號(hào) conda create -n tensorflow python=3.8
(2)激活虛擬環(huán)境
conda activate 虛擬環(huán)境名 conda activate tensorflow
提示:如果需要取消激活狀態(tài),輸入conda deactivate即可
(3)查看當(dāng)前環(huán)境的python位置
此時(shí)支持tensorflow的python解釋器就位于虛擬環(huán)境envs中,它的版本和(1)中所創(chuàng)建的版本是一致的,因此之后我們?cè)趐ycharm等IDE中直接導(dǎo)入下述地址即可(后面會(huì)講到)。
理解:miniforge3是Miniforge腳本運(yùn)行后所創(chuàng)建的包管理環(huán)境,miniforge3是類似于Anconda一樣的作用,在Anconda中我們可以創(chuàng)建多個(gè)虛擬環(huán)境,在miniforge3也是一樣的其中我們所創(chuàng)建的虛擬環(huán)境位于…/miniforge3/envs文件夾下,envs下的每個(gè)文件夾對(duì)應(yīng)著一個(gè)獨(dú)立的虛擬環(huán)境,當(dāng)我們需要在IDE中切換python解釋器的時(shí)候,我們便找到所需的python解釋器:…/miniforge3/envs/虛擬環(huán)境名稱(是一個(gè)文件夾,文件夾名稱和你在conda create -n 虛擬環(huán)境名 python=xxx是一個(gè)名)/bin/python,然后導(dǎo)入IDE即可。
3. 安裝tensorflow
當(dāng)創(chuàng)建完虛擬環(huán)境后,做完準(zhǔn)備工作之后,我們需要安裝tensorflow-macos,這是我們真正的目的。
(1)下載tensorflow安裝包(支持arm架構(gòu)版本的)
下載鏈接為Releases · apple/tensorflow_macos · GitHub,下載完成之后找一個(gè)文件夾進(jìn)行保存即可,然后直接解壓到當(dāng)前文件夾。
(2)保持tensorflow激活狀態(tài),進(jìn)入到剛剛解壓的tensorflow_macos文件夾中,手動(dòng)pip安裝whl文件
注意不要輸入conda deactivate關(guān)閉了tensorflow激活狀態(tài),直接cd找到文件夾即可
我的tensorflow_macos文件夾位置是/Users/xiewenhui/tensorflow_macos
找到tensorflow_macos文件夾:
繼續(xù)進(jìn)入下一級(jí)文件夾arm64:
手動(dòng)pip安裝之前,先看一下arm64下面有哪些whl文件,防止pip的時(shí)候發(fā)生遺漏:
存在5個(gè)whl文件都需要安裝
pip安裝之前我們需要修改lib路徑和envs路徑(很重要),方便我們下一步的安裝:
# 更改為tensorflow_macos下載解壓后的文件夾 libs="/Users/xiewenhui/tensorflow_macos/arm64/" # 替換成tensorflow的虛擬環(huán)境路徑,tensorflow是你之前創(chuàng)建虛擬環(huán)境的名稱,虛擬環(huán)境什么名,envs下文件夾就什么名 env="/Users/xiewenhui/miniforge3/envs/tensorflow"
下面手動(dòng)安裝這些文件,依次輸入下面命令:
pip install --upgrade pip wheel setuptools cached-property six pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/grpcio-1.33.2-cp38-cp38-macosx_11_0_arm64.whl" pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl" pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl" pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/tensorflow_macos-0.1a1-cp38-cp38-macosx_11_0_arm64.whl” pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/tensorflow_addons_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl” pip install absl-py astunparse flatbuffers gast google_pasta keras_preprocessing opt_einsum protobuf tensorflow_estimator termcolor typing_extensions wrapt wheel tensorboard typeguard
如果發(fā)生pip安裝錯(cuò)誤,可能是文件路徑不對(duì),lib路徑和envs路徑得確保正確,其次就是你所安裝的whl文件名和上述代碼中的不一致,以自己的whl文件名為主。tensorflow_macos不同的版本其中所包含的whl文件名可能不同。
如果出現(xiàn)命令行出現(xiàn)dquote的時(shí)候,最好自己直接粘貼ls顯示的文件名,pip指令可以復(fù)制,但是pip install ..."$libs/文件名.whl"的時(shí)候,建議文件名.whl從ls顯示出來(lái)的whl文件名中復(fù)制。
(3)以上安裝步驟就基本完成,但是注意由于Miniforge3中和Mini Conda一樣,主要包含了python和conda,其他的一些科學(xué)計(jì)算庫(kù)例如pandas等等需要自己手動(dòng)安裝,方式如下:
conda install -y pandas matplotlib scikit-learn jupyterlab
以上安裝步驟已經(jīng)完成,下面可以對(duì)安裝是否成功進(jìn)行測(cè)試
4. 測(cè)試
命令行輸入python,打開(kāi)python shell環(huán)境
依次輸入下面代碼:
import tensorflow as tf print(tf.__version__)
當(dāng)引入tensorflow不報(bào)錯(cuò)并且打印出tensorflow版本時(shí),代表tensorflow安裝成功
5. Pycharm導(dǎo)入含有tensorflow包的python解釋器
根據(jù)圖中路徑尋找python解釋器,在envs文件夾下,位置時(shí)~/miniforge3/envs/你的虛擬環(huán)境名(我的是tensorflow)/bin/python
Pycharm測(cè)試:
import tensorflow as tf print(tf.__version__) print(tf.config.list_physical_devices())
補(bǔ)充:實(shí)際上可以按照蘋果官網(wǎng)的方法進(jìn)行在線pip安裝,Tensorflow Plugin - Metal - Apple Developer
python -m pip install tensorflow-macos
但是由于在安裝中可能出現(xiàn)h5py無(wú)法安裝的情況,因此我們直接下載tensorflow_macos安裝包,下載到本地之后再用pip安裝本地文件,不僅速度快,而且不會(huì)出現(xiàn)h5py的相關(guān)報(bào)錯(cuò)
自己存在一些問(wèn)題的小記錄:
由于安裝時(shí)的tensorflow版本時(shí)2.4.0-rc0,但是在之后創(chuàng)建一些項(xiàng)目之后版本莫名變成了2.7.0。如果想要在裝回以前的2.4.0-rc0,則按照上面的步驟重新pip一下whl文件即可。
到此這篇關(guān)于MacOS(M1芯片 arm架構(gòu))下如何安裝tensorflow的文章就介紹到這了,更多相關(guān)MacOS安裝tensorflow內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python+Flask實(shí)現(xiàn)一個(gè)簡(jiǎn)易網(wǎng)頁(yè)驗(yàn)證碼登錄系統(tǒng)案例
當(dāng)今的互聯(lián)網(wǎng)世界中,為了防止惡意訪問(wèn),許多網(wǎng)站在登錄和注冊(cè)表單中都采用了驗(yàn)證碼技術(shù),驗(yàn)證碼可以防止機(jī)器人自動(dòng)提交表單,確保提交行為背后有一個(gè)真實(shí)的人類用戶,本文將向您展示如何使用Python的Flask框架來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的驗(yàn)證碼登錄系統(tǒng)2023-09-09超詳細(xì)注釋之OpenCV操作圖像平移轉(zhuǎn)換
這篇文章主要介紹了OpenCV操作圖像平移轉(zhuǎn)換,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Python圖像處理之識(shí)別圖像中的文字(實(shí)例講解)
今天小編就為大家分享一篇Python圖像處理之識(shí)別圖像中的文字(實(shí)例講解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Python opencv相機(jī)標(biāo)定實(shí)現(xiàn)原理及步驟詳解
這篇文章主要介紹了Python opencv相機(jī)標(biāo)定實(shí)現(xiàn)原理及步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04PyQt5 PySide2 觸摸測(cè)試功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了PyQt5 PySide2 觸摸測(cè)試功能的實(shí)現(xiàn),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04Python網(wǎng)絡(luò)編程之socket與socketserver
這篇文章介紹了Python網(wǎng)絡(luò)編程之socket與socketserver,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05python基于pdfminer庫(kù)提取pdf文字代碼實(shí)例
這篇文章主要介紹了python 提取pdf文字代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python 實(shí)現(xiàn)一行輸入多個(gè)值的方法
下面小編就為大家分享一篇Python 實(shí)現(xiàn)一行輸入多個(gè)值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04