tensorflow速成學習筆記——一
**
首先,需要一個anaconda並安裝tensorflow,具體安裝方法如下:
Anaconda 是一個用於科學計算的 Python 發行版,支援 Linux, Mac, Windows, 包含了眾多流行的科學計算、資料分析的 Python 包。
ps:本次使用的是Anaconda3-5.0.0-Linux-x86_64.sh
二、Anaconda,安裝
進入檔案目錄:
bash ./Anaconda3-5.0.0-Linux-x86_64.sh
回車
. . .
全程 yes +回車 ,預設安裝在home目錄下
三、Anaconda,環境變數
1.檢查環境變數,沒有則新增
檢視命令
sudo gedit ~/.bashrc
檢查末尾是否已經新增如下變數,沒有則新增
export PATH="/home/使用者名稱/anaconda3/bin:$PATH"
需要重啟系統,不然找不到命令
2.開啟控制檯 ,更換清華源(牆太高)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
3.建立一個名flappbird 的環境
conda create -n flappbird python=3.6
建立成功
啟用環境
source activate flappbird
四、tensorflow安裝
給 flappbird 環境安裝tensorflow
conda install -n flappbird -c https://conda.anaconda.org/jjhelmus tensorflow
五、遇到的錯誤+解決辦法
1.如果換源之後任然無法建立環境,並且報網路連線的錯誤:
報錯如下:
CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.continuum.io/pkgs/main/linux-64/repodata.json.bz2>
Elapsed: -
An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.
ConnectionError(MaxRetryError("HTTPSConnectionPool(host='repo.continuum.io', port=443): Max retries exceeded with url: /pkgs/main/linux-64/repodata.json.bz2 (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7fd5d462df28>: Failed to establish a new connection: [Errno 101] Network is unreachable',))",),)
解決辦法: 開啟原始檔
vim ~/.condarc
刪除defaults行
2.如果安裝資料夾出現一把小鎖,執行命令報錯
報錯如下
Traceback (most recent call last):
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/exceptions.py", line 640, in conda_exception_handler
return_value = func(*args, **kwargs)
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/cli/main.py", line 140, in _main
exit_code = args.func(args, p)
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/cli/main_create.py", line 68, in execute
install(args, parser, 'create')
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/cli/install.py", line 231, in install
unknown=index_args['unknown'], prefix=prefix)
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/core/index.py", line 101, in get_index
index = fetch_index(channel_priority_map, use_cache=use_cache)
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/core/index.py", line 120, in fetch_index
repodatas = collect_all_repodata(use_cache, tasks)
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/core/repodata.py", line 75, in collect_all_repodata
repodatas = _collect_repodatas_serial(use_cache, tasks)
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/core/repodata.py", line 485, in _collect_repodatas_serial
for url, schan, pri in tasks]
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/core/repodata.py", line 485, in <listcomp>
for url, schan, pri in tasks]
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/core/repodata.py", line 115, in func
res = f(*args, **kwargs)
File "/home/joahluo/Anaconda/lib/python3.6/site-packages/conda/core/repodata.py", line 473, in fetch_repodata
with open(cache_path, 'w') as fo:
PermissionError: [Errno 13] Permission denied: '/home/joahluo/Anaconda/pkgs/cache/09e2740c.json'
解決辦法: 執行如下命令,賦予許可權
sudo chmod -R 777 Anaconda
ps:其中Anaconda是我的安裝的資料夾名字
然後再在pycharm中匯入剛配好的tensorflow
1、下載PyCharm:https://www.jetbrains.com/pycharm/download/#section=linux
下載完成後將壓縮檔案解壓,然後開啟終端執行:
cd downloads/pycharm-2018.1/bin
bash pycharm.sh
啟動pycharm後需要註冊,選擇License server啟用,然後填入:http://artemis.my.to,然後點Activate啟用即可
2、下載Anaconda:https://repo.continuum.io/archive/index.html
下載完成後將壓縮檔案解壓,然後開啟終端執行:
cd downloads
bash Anaconda2-5.0.1-Linux-x86_64.sh
3、配置環境:
將Pycharm設定為桌面啟動:
啟動Pycharm後執行如下操作:
選擇Create Desktop Entry,
選ok,
拖到啟動項即可。
重點。。。。。。。。。。。。。。。。。。。。。
pycharm配置Anaconda下Python環境:
選Setting,
點選右上角設定按鈕,點選Add,
路徑選擇:/home/python/anaconda2/bin/python
即可。
再次提醒一下,我因為是要用tensorflow(上文引用部落格中flappbird的配置)所以不能用/home/anaconda2/bin/python,而是改成/home/anaconda3/envs/tensorflow(按照那一篇博文安裝的要改成flappbird)/bin/python這樣才能找到。
安裝完之後,我還遇到了一個很神奇的問題,就是在import的時候會提示libstdc++.so檔案有錯
在執行Python程式時,一句import tensorflow出現錯誤: 參考文章:http://blog.csdn.net/zx714311728/article/details/69628836,http://blog.csdn.net/xiaolong2w/article/details/23915171 這兩篇文章的思路是一樣的,感覺跟我的問題是一樣的,但是對裡面的路徑不太清楚,嘗試了很多次才搞懂。 下面會對路徑和方法進行說明: 1.檢視動態庫(the path after the "strings" is the path where the problem appears, look the first picture.)結果如下:strings /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6 | grep CXXABI
發現最高版本只有1.3.7,沒有1.3.9的。 2.執行以下命令CXXABI_1.3 CXXABI_1.3.1 CXXABI_1.3.2 CXXABI_1.3.3 CXXABI_1.3.4 CXXABI_1.3.5 CXXABI_1.3.6 CXXABI_1.3.7 CXXABI_TM_1
結果:ls -l /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6
3. 執行以下命令,查詢編譯lrwxrwxrwx 1 gaoliying gaoliying 19 11月 1 15:43 /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6 -> libstdc++.so.6.0.19
gcc
時生成的最新動態庫:出現:find / -name "libstdc++.so.*"
一下子出來了好多,對照參考連結,完全不懂下面怎麼辦了。 試了好多次,終於明白了,下面給出正確方法。 最新庫:6.0.24,最新目錄:/home/gaoliying/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/ (在路徑中出現gnu的是要找的目錄) 4.將上面的最新目錄複製到出現問題的目錄下:find: `/run/user/1000/gvfs': 許可權不夠 /home/gaoliying/anaconda3/lib/libstdc++.so.6 /home/gaoliying/anaconda3/lib/libstdc++.so.6.0.19 /home/gaoliying/anaconda3/lib/libstdc++.so.6.0.24 /home/gaoliying/anaconda3/lib/libstdc++.so.6.0.19-gdb.py /home/gaoliying/anaconda3/pkgs/libstdcxx-ng-7.2.0-h24385c6_1/lib/libstdc++.so.6 /home/gaoliying/anaconda3/pkgs/libstdcxx-ng-7.2.0-h24385c6_1/lib/libstdc++.so.6.0.24 /home/gaoliying/anaconda3/pkgs/libstdcxx-ng-7.2.0-h24385c6_1/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6 /home/gaoliying/anaconda3/pkgs/libstdcxx-ng-7.2.0-h24385c6_1/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24 /home/gaoliying/anaconda3/pkgs/gcc-4.8.5-7/lib/libstdc++.so.6 /home/gaoliying/anaconda3/pkgs/gcc-4.8.5-7/lib/libstdc++.so.6.0.19 /home/gaoliying/anaconda3/pkgs/gcc-4.8.5-7/lib/libstdc++.so.6.0.19-gdb.py /home/gaoliying/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6 /home/gaoliying/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24 /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.6.0.19 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 /usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21-gdb.py
(參考連結中只寫了/usr/lib,這樣看不懂,一開始也寫了這個路徑,發現庫還是沒變,原來此處是將出現問題的地方替換掉) 5. 將libstdc++.so.6連線到libstdc++.so.6.0.24上去:cp /home/gaoliying/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24 /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6
6. 預設動態庫升級完成。重新執行以下命令檢查動態庫:cd /usr/lib rm -rf libstdc++.so.6 ln -s libstdc++.so.6.24 libstdc++.so.6
結果如下:strings /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6 | grep CXXABI
可以看到確實是連線到新的動態庫上去了。完成!CXXABI_1.3 CXXABI_1.3.1 CXXABI_1.3.2 CXXABI_1.3.3 CXXABI_1.3.4 CXXABI_1.3.5 CXXABI_1.3.6 CXXABI_1.3.7 CXXABI_1.3.8 CXXABI_1.3.9 CXXABI_1.3.10 CXXABI_1.3.11 CXXABI_TM_1 CXXABI_FLOAT128 CXXABI_1.3 CXXABI_1.3.11 CXXABI_1.3.2 CXXABI_1.3.6 CXXABI_FLOAT128 CXXABI_1.3.9 CXXABI_1.3.1 CXXABI_1.3.5 CXXABI_1.3.8 CXXABI_1.3.4 CXXABI_TM_1 CXXABI_1.3.7 CXXABI_1.3.10 CXXABI_1.3.3
提醒一下,上面的博文最後有點小錯誤,ln -s libstdc++.so.6.24 libstdc++.so.6這句命令中,應改為 libstdc++.so.6.0.24 第一篇筆記就到這裡了,下次再更!