/*
????TensorFlow是谷歌研發的第二代人工智能學習開源框架,可被用于圖像識別、語音識別等多項機器學習和深度學習領域。TensorFlow的一大特點是支持異構設備分布式計算,這使該框架能夠在從嵌入式到大型服務器的各種不同平臺上運行。同時隨著ARM處理器性能的不斷增強,越來越多的開發者和廠商在把TensorFlow應用遷移到ARM平臺上。由于實際項目的需求,我嘗試在ARM嵌入式平臺上安裝TensorFlow并最終測試成功,下面詳細說明過程。
*/
0. 硬件資源介紹
????此案例中選用的嵌入式開發板型號是Firefly-RK3399,官網的產品介紹可點擊http://www.t-firefly.com/product/rk3399.html。RK3399使用了64位Cortex-A72*2+CortexA53*4的bigLITTLE大小核架構,最高頻率達到了2GHz。開發板上雖然還集成了一顆Mali-T860 MP4四核GPU,但是用這個GPU來做深度學習有點不太現實,因此選擇CPU版本的TensorFlow。此外,選配的RK3399還擁有4G DDR3內存和120G eMMC硬盤。嵌入式板安裝了Ubuntu16.04系統,此系統預裝了Python2.7。
1.安裝pip3
首先RK3399開機,打開terminal,敲入命令,等待安裝完成。
#For Python 3.5.2
sudo apt-get install python3-pip python3-dev?
2.獲取TensorFlow安裝包
CPU版本的TensorFlow一般來說是運行在主流的x86架構下的,但是萬能的谷歌怎么會忘記嵌入式領域。谷歌的幾位大神員工合力貢獻出了一個適用于ARM aarch64架構的TensorFlow安裝包。使用git下載tensorflow-1.1.0rc1-cp35-cp35m-linux_aarch64.whl安裝包。此過程需要等待較長時間。
#安裝git
sudo apt-get install git-core
#下載tensorflow-1.1.0rc1-cp35-cp35m-linux_aarch64.whl
git clone https://github.com/JohnnyChan8/TensorFlow4FireflyRK3399.git
3.使用pip3安裝TensorFlow
#進入下載的tensorflow安裝包內
pip3 install tensorflow-1.1.0rc1-cp35-cp35m-linux_aarch64.whl
#等待時間也比較長,安裝完成后可能會提示需要升級pip版本,根據提示命令進行pip升級
4.安裝其他常用的模塊
#Python調用MATLAB畫圖庫
python3 -m pip install? matplotlib
#cairocffi庫
sudo apt-get install python3-cairocffi
#優質的數據集
python3 -m pip install? sklearn
5.測試TensorFlow是否安裝成功
#在命令行中輸入
python3
#在Python命令行中逐行輸入
import tensorflow as tf
hello= tf.constant('Hello TensorFlow!')
sess= tf.Session()
print(sess.run(hello))
#如果打印'Hello TensorFlow!'說明tensorflow安裝成功
7.更換系統默認Python版本
Ubuntu16.04已經默認安裝了Python2.7.2,在命令行中輸入Python進入的是Python2.7環境。但是在實際中常用的是Python3.5或3.6,上面的步驟已經安裝了Python3.5.2,因此要更改系統默認Python版本。
#以 root 身份登錄,首先列出所有可用的 python 替代版本信息:
update-alternatives --list python
#可能會顯示如下錯誤
update-alternatives: error: no?alternatives for python
#如果出現以上所示的錯誤信息,則表示 Python 的替代版本尚未被 update-alternatives 命令識別。想解決這個問題,我們需要更新一下替代列表,將 python2.7 和 python3.5 放入其中
whereis python
#用以上命令得到python的路徑,按照得到的路徑設置默認的Python版本
update-alternatives --install
/usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install
/usr/bin/python python /usr/bin/python3.5 2
/*
--install選項使用了多個參數用于創建符號鏈接。最后一個參數指定了此選項的優先級,如果我們沒有手動來設置替代選項,那么具有最高優先級的選項就會被選中。我為python3.5設置的優先級為2,所以update-alternatives 命令會自動將它設置為默認 Python 版本。
*/
彩蛋
在RK3399平臺上沒有安裝anaconda3,因為x86架構的軟件不能在ARMv8上運行。但是在樹莓派生態中已經有人做出了嘗試,可以安裝特制版anaconda,即miniconda。請參考
https://blog.csdn.net/weixin_37272286/article/details/80092520
Hear me roar!