1. 程式人生 > >windows安裝TensorFlow和Keras遇到的問題及其解決方法

windows安裝TensorFlow和Keras遇到的問題及其解決方法

  安裝TensorFlow在Windows上,真是讓我心力交瘁,想死的心都有了,在Windows上做開發真的讓人發狂。

  首先說一下我的經歷,本來也就是起初,網上說python3.7不支援TensorFlow環境,而且使用Anaconda最好,所以我將我之前Windows上所有的python環境解除安裝掉!!!,對沒錯,是所有,包括Anaconda環境,python環境,pycharm環境也解除安裝掉了。而且我喪心病狂的在電腦上找幾乎所有關於python的字眼,全部刪除掉,統統不留。只是為了鐵了心在Windows上成功安裝一個TensorFlow環境。

  之前在Linux上環境都有,但是總是切換Linux和Windows比較麻煩,但是這個原因解釋起來也比較麻煩,就不多說了。總之,就是必須在Windows上安裝TensorFlow!這次是鐵了心的,因為去年在Windows上沒有安裝成功,我就避而遠之,沒弄,但是現在不得不再來,我決定遇到問題不再躲避,要直面挫折,即使浪費很長的時間,也必須完成(其實是正好這段時間不太忙)。

  然後聽到同事說,很簡單啊,就是安裝一個Anaconda對應python3.6版本的就行,後面直接pip  install 就OK了。當然我們希望是這樣,可是事與願違,簡直是氣死我了,這一天安裝anaconda就安裝了三次,你說累不累,除了安裝這個,還要安裝對應的包,真的是卸了又安,安了又卸。

  而打算最後一次嘗試,竟然是安裝的python3.7成功了(各位盆友,記住,只是安裝成功了!!),哈哈哈,真的我覺得我這笑是無奈的笑。

  下圖是anaconda的版本和python的版本:

  下圖是TensorFlow和keras安裝成功的見證:

   但是,使用的時候還是報錯!!!下圖是在python3.7的情況下:

  唉,難受,那最最後一次嘗試,就是在python3.6版本下安裝,終於成功了!!包括測試成功,上圖:

  所以,我的總結就是,安裝python3.6 還是python3.7的什麼都不重要,最重要的是遇到問題,解決問題。無論用哪個版本,只要TensorFlow支援這個版本,我們就可以按照成功!!!,但是前提是必須官方支援的版本

  好了,牢騷發完了,廢話也說完了,下面說說安裝注意的坑。

1,anaconda安裝要注意的問題

  話不多說,先上anaconda的下載地址。

  映象下載地址:清華映象源

  官方下載地址:https://repo.anaconda.com/archive/

  那anaconda按照要注意的問題是什麼呢?

1.1,安裝到這一步,配置所有的User,選擇第二個!!

   如果選擇第一個,可能會出現,下面報錯,也就是PermissionError,許可權不足,所以就是安裝不成功,即使我使用了管理員許可權進入了cmd,但是還是沒有任何用處。

  當然,有可能你們有用,那麼如何進入管理員身份執行,如下:

   到C:\Windows\System32目錄下,右鍵單擊cmd.exe檔案以管理員身份執行。如下

  執行結果如下:

1.2,安裝到這一步,最好√上第一個,讓anaconda自己配置環境變數

  當然,不讓anaconda自己配置環境變數也可以,那就是我們自己去我的電腦配置。

   如何確保已經配置好環境變量了呢?

  我們開啟cmd,直接輸入pip list 或者 conda list,如果出現anaconda安裝的包,則說明沒有問題,如果出現,無此命令,則環境變數沒有配置好。

  我第一次沒有打 √ ,選擇自己配置的環境變數。

  配置環境變數就是根據安裝時的路徑找到以下幾個路徑用於環境配置,我放在E盤裡,以下為我安裝時的路徑。

  • E:\anaconda3
  • E:\anaconda3\Scripts
  • E:\anaconda3\Library\bin

  配置環境:回到桌面,右擊‘我的電腦’,然後點選屬性-高階系統設定-右下角點選環境變數,點選系統變數下方新建,如下圖所示,依次將上面的三個路徑輸入,路徑間用英文狀態下的分號隔開,點選確定並應用。

  然後設定環境變數:

 

  檢測是否安裝成功
  開啟命令提示符(按住田字鍵和R鍵)輸入cmd,輸入conda和python,檢測是否安裝成功。

  好啦~安裝完成啦!

2,安裝TensorFlow中報錯cannot uninstall wrapt

  報錯如下:

Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot 
accurately determine which files belong to it which would lead to only a partial
 uninstall.

  導致錯誤的原因:Wrapt issue when installing package

  解決方法:

pip install wrapt --upgrade  --ignore-installed wrapt

  強行升級,然後安裝TensorFlow和Keras,成功了!!

# GPU 版本
>>> pip install --upgrade tensorflow-gpu

# CPU 版本
>>> pip install --upgrade tensorflow

# Keras 安裝
>>> pip install keras 

  安裝成功,是成功了,但是無法使用,依舊會報錯。

3,使用Keras中報錯TensorFlow錯誤

   匯入Keras,發現報錯了,報錯資訊如下:

   本以為是版本的問題,然後解除安裝了keras和TensorFlow:

  最好將其依賴一同解除安裝掉:

 

   然後嘗試安裝了TensorFlow更低的版本(版本如下面所示):

   結果無濟於事,沒用!!!

  迫不得已,我決定降低python版本,嘗試python3.6,大家都說3.6好,那就用唄。

 4,在anaconda中降低python版本,嘗試python3.6

  使用以下命令建立新環境:

conda create -n env_name list of packages

  其中 -n 代表 name,env_name 是需要建立的環境名稱,list of packages 則是列出在新環境中需要安裝的工具包。

  我現在的python版本是3.7,但是我想安裝一個python 3.6的環境,則在anaconda prompt輸入:

conda create -n python36 python=3.6

  控制檯會輸出:

  輸入y:

  下面我們啟用這個環境:

conda activate python36

  然後安裝keras和TensorFlow,最後在python環境中驗證,發現新的錯誤:

  講道理,現在的我已經麻木了,感覺自己把該犯的錯全犯了,運氣怎麼這麼差呢?

  百度,改錯方法如下:

5,使用TensorFlow,keras出現錯誤:modulenotfounderror: no module named tensorflow.python

  真的是遇到問題,解決問題,我已經麻木了。

  可能是因為tensorflow作為後端對keras的支援不夠好,但是keras的backend 同時支援tensorflow和theano,並且預設是tensorflow,因此在win本上需要更改backend為theano才能執行。

  在keras安裝目錄裡(在安裝環境的目錄裡有Lib\site-packages\keras),找到Lib\site-packages\keras\backend__init__.py檔案。

將

    _BACKEND = 'tensorflow'

改為

    _BACKEND = 'theano'

  然後在C:\Users\Administrator\下有個資料夾.keras,裡面有keras.json檔案,修改裡面的內容,原來是:

{
    "floatx": "float32",
    "epsilon": 1e-07,
    "backend": "tensorflow",
    "image_data_format": "channels_last"
}

修改為

{
    "floatx": "float32",
    "epsilon": 1e-07,
    "backend": "theano",
    "image_data_format": "channels_last"
}

  那這個只解決了Keras的問題,但是TensorFlow的問題仍然沒有解決:

  從下面程式碼來看,我們的Keras確實可以執行。但是TensorFlow仍然報錯。

python使用TensorFlow報錯 ModuleNotFoundError:No module named 'tensorflow.python

  python使用TensorFlow報錯 ModuleNotFoundError:No module named 'tensorflow.python

   我去我同事能使用的TensorFlow的安裝包site_packages下的tensorflow包裡面檢視,發現別人的環境都是這樣的:

  而我的環境中沒有python,example include這幾個資料夾,終於知道問題出在哪裡了,所以我打算將別人的這個資料夾複製下來,但是於此同時在網上看到一個安裝方法,反正折騰一天了,這個複製還在進行當中,我就先嚐試了一下:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ https://mirrors.tuna.tsinghua.edu.cn/tensorflow/windows/cpu/tensorflow-1.3.0rc0-cp36-cp36m-win_amd64.whl

  然後等了好久,安裝成功了:

   我也就不報希望,但是還是例行公事的在python環境中驗證了一下:

  不知道大家看到了什麼,對,安裝成功了!!!!

  此時此刻,我的內心已經毫無波瀾了,一絲喜悅感都沒有了。

   為了測試到底能不能用,我又將keras的後端環境由theano換成了TensorFlow(如何改回去,上面有程式碼,大家可以自己改,這裡不再重複了)。

  然後測試,成功!!!,上圖:

  今天真的是,哈哈哈哈哈。既然這個舒服,那我就再在python3.7上測試安裝keras和tensorflow,看看是否成功,但是去清華大學映象倉庫,發現沒有python3.7版本的tensorflow。

  下面記錄一下去清華大學映象倉庫下載並安裝對應版本的tensorflow,一方面記錄正確的安裝過程,另一方面,證明確實沒用python3.7對應的TensorFlow版本。

 6,一次安裝成功TensorFlow過程

  直接去清華大學映象倉庫,檢視對應版本的tensorflow:地址:https://mirrors.tuna.tsinghua.edu.cn/

  尋找找tensorflow,並點進去:

  那查詢自己對應的電腦系統:

  我安裝的是CPU版本的:

    點進去,發現,目前只有python3.5 和 python3.6的:

   然後,下載對應python版本的輪子,直接安裝即可。

 7,不信邪,嘗試python3.7版本安裝TensorFlow,最終放棄

  為什麼這樣說呢?,因為我在常下載輪子的地方發現了python3.7版本對應的TensorFlow,真的。

  (下載輪子的地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/)

  上圖:

  反正都失敗這麼多次了,也不差這一回,我就繼續安裝了一下python3.7版本的:

pip install  tensorflow-1.9.0-cp37-cp37m-win_amd64.whl

  顯示,安裝成功:

  此時,內心竊喜,測試一下:

  心裡有很多髒話,不值當講不當講,還是沒有用。

  所以目前決定放棄在python3.7版本安裝tensorflow!!反正在python3.6版本上已經安裝成功了,可以用就行了。

8,彩蛋 

  哈哈哈,很高興,看到我這篇文章的盆友,能看到這裡,這裡我分享一下我這次撥開烏雲見彩虹的坎坷歷程。

  講道理,這兩天的無數次嘗試,最終成功,讓我明白一個道理,就是遇到問題並不可怕,可怕的是自己脆弱的心,不斷想放棄的想法。

  記得去年十月份的時候,我在Windows上嘗試安裝tensorflow失敗了。我就對深度學習這塊避而遠之,即使訓練模型也在Linux伺服器上做, 麻煩是麻煩了點,但是就是不願意面對這個麻煩。但是從上個月開始,當我看到同事完成了一件事後,我決定安裝tensorflow(因為最近確實用的比較多,切換太頻繁也比較麻煩),她的那鍥而不捨精神打動了我,什麼事情呢? 先說一下背景,她是學習java的,雖然說程式設計語法大相徑庭,但是不同點依舊很多,而需要她使用python一個web框架flask做一個東西。她雖然不會,但是不斷嘗試,不斷嘗試,可以說是遇到了很多很多麻煩,挫折,我也天天聽到了她的抱怨(可惜我幫不上),但是終於聽到了她說“yes”。我知道她成功了。所以,我決定不放棄,一定要安裝成功,最後也確實安裝成功了。

  那其實,很多人說,沒這麼麻煩,我在Windows上直接pip install 就成功了啊,也確實是,但是我確實遇到了很多麻煩。希望我這次經歷能幫到需要幫助的盆友。

  

&n