Ubuntu中配置TensorFlow使用環(huán)境的方法
一、TensorFlow簡(jiǎn)介
TensorFlow™是一個(gè)基于數(shù)據(jù)流編程(dataflow programming)的符號(hào)數(shù)學(xué)系統(tǒng),被廣泛應(yīng)用于各類機(jī)器學(xué)習(xí)(machine learning)算法的編程實(shí)現(xiàn),其前身是谷歌的神經(jīng)網(wǎng)絡(luò)算法庫(kù)DistBelief。
Tensorflow擁有多層級(jí)結(jié)構(gòu),可部署于各類服務(wù)器、PC終端和網(wǎng)頁(yè)并支持GPU和TPU高性能數(shù)值計(jì)算,被廣泛應(yīng)用于谷歌內(nèi)部的產(chǎn)品開(kāi)發(fā)和各領(lǐng)域的科學(xué)研究。
TensorFlow由谷歌人工智能團(tuán)隊(duì)谷歌大腦(Google Brain)開(kāi)發(fā)和維護(hù),擁有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在內(nèi)的多個(gè)項(xiàng)目以及各類應(yīng)用程序接口(Application Programming Interface, API)。自2015年11月9日起,TensorFlow依據(jù)阿帕奇授權(quán)協(xié)議(Apache 2.0 open source license)開(kāi)放源代碼。
二、安裝Anaconda
Anaconda指的是一個(gè)開(kāi)源的Python發(fā)行版本,其包含了conda、Python等180多個(gè)科學(xué)包及其依賴項(xiàng)。因?yàn)榘舜罅康目茖W(xué)包,Anaconda 的下載文件比較大(約 531 MB),如果只需要某些包,或者需要節(jié)省帶寬或存儲(chǔ)空間,也可以使用Miniconda這個(gè)較小的發(fā)行版(僅包含conda和 Python)。
獲取Anaconda
在官網(wǎng)下載鏈接下載Python3.7版本的安裝包
下載好以后的文件是Anaconda3-2020.02-Linux-x86_64.sh
開(kāi)始安裝
使用終端進(jìn)入到保存Anaconda文件的目錄下,使用下面命令開(kāi)始安裝
bash Anaconda3-2020.02-Linux-x86_64.sh
開(kāi)始安裝后會(huì)讓咱們檢查Anaconda License,若想跳過(guò),則按Q跳過(guò),之后會(huì)詢問(wèn)我們是否同意(Do you approve the license terms?),輸入yes
然后回車?yán)^續(xù)
接下來(lái)會(huì)詢問(wèn)咱們要把Anaconda安裝到哪個(gè)路徑,若有指定,輸入路徑并回車?yán)^續(xù),若無(wú)指定,將會(huì)安裝到默認(rèn)目錄家目錄,回車?yán)^續(xù)。
等到下一個(gè)提示確定的時(shí)候,是問(wèn)咱們要不要在~/.bashrc文件中加入環(huán)境變量,輸入yes
回車?yán)^續(xù),等滾屏結(jié)束,咱們的Anaconda就安裝完畢了。
三、TensorFlow的兩個(gè)主要依賴包
Protocol Buffer
首先使用apt-get安裝必要組件
$ sudo apt-get install autoconf automake libtool curl make g++ unzip
然后cd到合適的目錄使用git clone功能獲取安裝文件
$ git clone $ https://github.com/protocolbuffers/protobuf.git $ cd protobuf $ git submodule update --init --recursive $ ./autogen.sh
開(kāi)始安裝
$ ./configure $ make $ make check $ sudo make install $ sudo ldconfig # refresh shared library cache.
在安裝結(jié)束后,使用如下命令,看到版本號(hào)則安裝成功
$ protoc --version
Bazel
安裝準(zhǔn)備
在安裝Bazel之前,需要安裝JDK8,具體安裝方法請(qǐng)參考如下鏈接
jdk8安裝方法
然后安裝其他的依賴工具包
$ sudo apt-get install pkg-config zip g++ zlib1g-dev unzip
獲取Bazel
在發(fā)布頁(yè)面獲取bazel-0.4.3-jdk7-installer-linux-x86_64.sh
,
然后通過(guò)這個(gè)安裝包安裝Bazel
$ chmod +x bazel-0.4.3-jdk7-installer-linux-x86_64.sh $ ./bazel-0.4.3-jdk7-installer-linux-x86_64.sh --user
安裝完成后繼續(xù)安裝其他TensorFlow需要的依賴工具包
$ sudo apt-get install python3-numpy swig python3-dev python3-wheel
在完成后,在~/.bashrc中添加環(huán)境變量
export PATH"$PATH:$HOME/bin"
然后使用$ source ~/.bashrc
激活
然后在終端輸入bazel
出現(xiàn)版本號(hào)的話,則安裝成功。
四、安裝CUDA和cuDNN
如果計(jì)算機(jī)上有安裝NVIDIA的GPU并安裝驅(qū)動(dòng)的話,可以使用CUDA和cuDNN進(jìn)行GPU運(yùn)算
CUDA
CUDA(Compute Unified Device Architecture),是顯卡廠商N(yùn)VIDIA推出的運(yùn)算平臺(tái)。 CUDA™是一種由NVIDIA推出的通用并行計(jì)算架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計(jì)算問(wèn)題。 它包含了CUDA指令集架構(gòu)(ISA)以及GPU內(nèi)部的并行計(jì)算引擎。 開(kāi)發(fā)人員可以使用C語(yǔ)言來(lái)為CUDA™架構(gòu)編寫(xiě)程序,C語(yǔ)言是應(yīng)用最廣泛的一種高級(jí)編程語(yǔ)言。所編寫(xiě)出的程序可以在支持CUDA™的處理器上以超高性能運(yùn)行。CUDA3.0已經(jīng)開(kāi)始支持C++和FORTRAN。
獲取并安裝CUDA
在官網(wǎng)獲取合適版本的CUDA Toolkit安裝包
使用如下命令,安裝cuda
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin $ sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 $ wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb $ sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb $ sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub $ sudo apt-get update $ sudo apt-get -y install cuda
測(cè)試CUDA
在安裝完畢后要確認(rèn)安裝情況就進(jìn)入例子目錄進(jìn)行編譯
$ cd /usr/local/sample $ make all
此時(shí)有可能編譯出錯(cuò),錯(cuò)誤信息為提示找不到nvscibuf.h,就使用gedit工具打開(kāi)Makefile文件,把第41行改為
FILTER_OUT := 0_Simple/cudaNvSci/Makefile
然后再次make all
進(jìn)行編譯,編譯成功后后會(huì)提示Finished building CUDA samples
這時(shí)候進(jìn)入/usr/local/cuda/extras/demo_suite
目錄下,找到deviceQuery
可執(zhí)行文件,并執(zhí)行,將會(huì)輸出GPU相關(guān)信息。
這是博主的GPU信息
CUDA Device Query (Runtime API) version (CUDART static linking) Detected 1 CUDA Capable device(s) Device 0: "GeForce GTX 1060 6GB" CUDA Driver Version / Runtime Version 10.2 / 10.2 CUDA Capability Major/Minor version number: 6.1 Total amount of global memory: 6075 MBytes (6370295808 bytes) (10) Multiprocessors, (128) CUDA Cores/MP: 1280 CUDA Cores GPU Max Clock rate: 1759 MHz (1.76 GHz) Memory Clock rate: 4004 Mhz Memory Bus Width: 192-bit L2 Cache Size: 1572864 bytes Maximum Texture Dimension Size (x,y,z) 1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384) Maximum Layered 1D Texture Size, (num) layers 1D=(32768), 2048 layers Maximum Layered 2D Texture Size, (num) layers 2D=(32768, 32768), 2048 layers Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 49152 bytes Total number of registers available per block: 65536 Warp size: 32 Maximum number of threads per multiprocessor: 2048 Maximum number of threads per block: 1024 Max dimension size of a thread block (x,y,z): (1024, 1024, 64) Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535) Maximum memory pitch: 2147483647 bytes Texture alignment: 512 bytes Concurrent copy and kernel execution: Yes with 2 copy engine(s) Run time limit on kernels: Yes Integrated GPU sharing Host Memory: No Support host page-locked memory mapping: Yes Alignment requirement for Surfaces: Yes Device has ECC support: Disabled Device supports Unified Addressing (UVA): Yes Device supports Compute Preemption: Yes Supports Cooperative Kernel Launch: Yes Supports MultiDevice Co-op Kernel Launch: Yes Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0 Compute Mode: < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) > deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.2, CUDA Runtime Version = 10.2, NumDevs = 1, Device0 = GeForce GTX 1060 6GB Result = PASS
此時(shí),CUDA安裝完畢。
cuDNN(CUDA安裝完成時(shí)才可用)
NVIDIA cuDNN是用于深度神經(jīng)網(wǎng)絡(luò)的GPU加速庫(kù)。它強(qiáng)調(diào)性能、易用性和低內(nèi)存開(kāi)銷。NVIDIA cuDNN可以集成到更高級(jí)別的機(jī)器學(xué)習(xí)框架中,如加州大學(xué)伯克利分校的流行caffe軟件。簡(jiǎn)單的,插入式設(shè)計(jì)可以讓開(kāi)發(fā)人員專注于設(shè)計(jì)和實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型,而不是調(diào)整性能,同時(shí)還可以在GPU上實(shí)現(xiàn)高性能現(xiàn)代并行計(jì)算。
獲取cuDNN
在官網(wǎng)鏈接注冊(cè)完成并驗(yàn)證郵箱后,點(diǎn)擊Download cuDNN
下載
記得在同意前面打勾勾~
現(xiàn)在最新版本的是CUDA 10.2,cuDNN 7.6.5.32,得到的文件是cudnn-10.2-linux-x64-v7.6.5.32.tgz
下載完畢后,進(jìn)入下載目錄,使用如下命令進(jìn)行解壓
$ tar -zxvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
會(huì)生成一個(gè)名為cuda
的文件夾,進(jìn)入該文件夾
$ cd cuda
然后使用復(fù)制操作完成安裝
sudo cp lib64/libcudnn* /usr/local/cuda/lib64/ sudo cp include/cudnn.h /usr/local/cuda/include
操作完成后,進(jìn)入cuDNN的目錄更新庫(kù)文件的軟鏈接
$ cd /usr/local/cuda/lib64 $ sudo chmod +r libcudnn.so.7.6.5 $ sudo ln -s libcudnn.so.7.6.5 libcudnn.so.7 $ sudo ln -s libcudnn.so.7.6.5 libcudnn.so $ sudo ldconfig
若軟鏈接時(shí)報(bào)錯(cuò),則把-s改成-sf即可
接下來(lái)在~/.bashrc中添加環(huán)境變量
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:usr/local/cuda-10.2/extras/CUPTI/lib64:$LD_LIBRARY_PATH export CUDA_HOME=/usr/local/cuda-10.2 export PATH=/usr/local/cuda-10.2/bin:$PATH
至此,CUDA與cuDNN安裝完成。
五、正式開(kāi)始安裝TensorFlow
在開(kāi)始安裝前,首先安裝pip
$ sudo apt-get install python3-pip python3-dev
在完成后輸入pip回車會(huì)輸出相關(guān)命令
Usage: pip <command> [options]
在pip安裝完成后,輸入如下命令開(kāi)始安裝最新的TensorFlow。
$ pip install tensorflow
若無(wú)GPU,則安裝CPU版本TensorFlow
$ pip install tensorflow-cpu
安裝完成后,使用Python
測(cè)試第一個(gè)TensorFlow程序
$ python3
>>> import tensorflow as tf >>> tf.add(1, 2).numpy() 3 >>> hello = tf.constant('Hello, TensorFlow!') >>> hello.numpy() b'Hello, TensorFlow!'
有生成上述結(jié)果時(shí),TensorFlow安裝成功。
至此,TensorFlow使用環(huán)境,安裝完成。
到此這篇關(guān)于Ubuntu中配置TensorFlow使用環(huán)境的方法的文章就介紹到這了,更多相關(guān)Ubuntu配置TensorFlow內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用python數(shù)據(jù)清洗代碼實(shí)例
這篇文章主要介紹了使用python數(shù)據(jù)清洗代碼實(shí)例,分享一下近期用python做數(shù)據(jù)清洗匯總的相關(guān)代碼,這里我們用到的python包有pandas、numpy、os等,需要的朋友可以參考下2023-07-07用python實(shí)現(xiàn)批量重命名文件的代碼
任務(wù)很簡(jiǎn)單,某個(gè)目錄下面有幾千個(gè)文件,某些文件沒(méi)有后綴名,現(xiàn)在的任務(wù)就是將所有的沒(méi)有后綴名的文件加上后綴名,python有現(xiàn)成的函數(shù)可以實(shí)現(xiàn),但是在實(shí)現(xiàn)過(guò)程中遇到幾個(gè)問(wèn)題,分享一下解決方法2012-05-05python中urllib.request和requests的使用及區(qū)別詳解
這篇文章主要介紹了python中urllib.request和requests的使用及區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05python3 http提交json參數(shù)并獲取返回值的方法
今天小編就為大家分享一篇python3 http提交json參數(shù)并獲取返回值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12python中sql解析庫(kù)sqlparse基本操作指南
sqlparse是用于Python的非驗(yàn)證SQL解析器,它提供了對(duì)SQL語(yǔ)句的解析,拆分和格式化的支持,這篇文章主要給大家介紹了關(guān)于python中sql解析庫(kù)sqlparse基本操作指南的相關(guān)資料,需要的朋友可以參考下2024-08-08