簡體   English   中英

如何讓 Keras 在 Anaconda 中使用 Tensorflow 后端?

[英]How to make Keras use Tensorflow backend in Anaconda?

我已經在我的 Anaconda 環境中安裝了 tensorflow-gpu。 他們都工作得很好。

現在我正在嘗試使用 Tensorflow 后端安裝 Keras。 根據我剛剛運行的指令

pip install keras

但它沒有安裝keras,然后我嘗試了:

conda install -c conda-forge keras=2.0.2

然后我現在可以在 python 中導入 keras。 但問題是,它總是使用 Theano 后端。 我試圖改變這一點,但不知道如何去做。

我也嘗試編輯文件~/.keras ,但實際上默認后端已經是 tensorflow。

請幫助..非常感謝!

發生這種情況是因為 keras conda- ${CONDA_PREFIX}/etc/conda/activate.d/keras_activate.sh包在${CONDA_PREFIX}/etc/conda/activate.d/keras_activate.sh放置了一個文件,該文件設置了環境變量KERAS_BACKEND

(root) [root@starlabs ~]# cat $CONDA_PREFIX/etc/conda/activate.d/keras_activate.sh
#!/bin/bash
if [ "$(uname)" == "Darwin" ]
then
    # for Mac OSX
    export KERAS_BACKEND=tensorflow
elif [ "$(uname)" == "Linux" ]
then
    # for Linux
    export KERAS_BACKEND=theano
fi

正如您從文件中看到的,在 Linux 中,它將值設置為 'theano' 並根據官方文檔:

環境變量 KERAS_BACKEND 將覆蓋配置文件中定義的內容

要解決此問題,您可以編輯此文件並將“theano”更改為“tensorflow”(這可能會在重新安裝或更改環境時被覆蓋),或者執行以下操作:

export KERAS_BACKEND=tensorflow
python /path/to/python/program.py

從 conda-forge 安裝 keras 后遇到了同樣的問題。 keras.json已經有了 tensorflow:

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

但是activate tensorflow_keras (其中“ tensorflow_keras ”是環境名稱),將后端更改為 theano:

C:\Users\User1>activate tensorflow_keras

(tensorflow_keras) C:\Program Files\Anaconda3\envs\tensorflow_keras\etc\conda\ac
tivate.d>set "KERAS_BACKEND=theano"

按照上面的@FvD,我編輯了這個文件:

C:\Program Files\Anaconda3\envs\tensorflow_keras\etc\conda\activate.d

並將 theano 更改為 tensorflow:

set "KERAS_BACKEND=tensorflow"

在 Windows 10 上的多用戶安裝中,Anaconda 環境激活文件是:

C:\Users\<user name>\AppData\Local\Continuum\Anaconda3\envs\<environment name>\etc\conda\activate.d\keras_activate.bat

只需更改<user name><environment name>即可匹配。

有一個類似的問題,似乎如果~/.keras/keras.json無法訪問,則 keras 正在使用/tmp/.keras/keras.json

對於使用 Anaconda 的 Windows 用戶。 打開 Anaconda Prompt 並輸入:

set "KERAS_BACKEND=tensorflow"

這應該夠了吧。 如果使用 Jupyter Notebook,則需要重新啟動它。

雖然這看起來有點工作,但如果你像我一樣使用 conda envs,我有分別用於 Tensorflow 和 Theano 的環境。 每次激活都會減少很多環境變量的重復設置和取消設置。

https://conda.io/docs/user-guide/tasks/manage-environments.html

根據 conda envs 頁面。

1)在你的終端窗口中找到conda環境的目錄,比如

/home/jsmith/anaconda3/envs/analytics.

2)進入該目錄並創建這些子目錄和文件:

cd /home/jsmith/anaconda3/envs/analytics
mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
touch ./etc/conda/activate.d/env_vars.sh
touch ./etc/conda/deactivate.d/env_vars.sh

3) 編輯 ./etc/conda/activate.d/env_vars.sh 如下:

echo 'export KERAS_BACKEND=theano' > ./etc/conda/activate.d/env_vars.sh

4) 編輯 ./etc/conda/deactivate.d/env_vars.sh 如下:

echo 'unset KERAS_BACKEND' > ./etc/conda/deactivate.d/env_vars.sh

在 Mac 系統中,轉到終端並導航到用戶配置文件並檢查.keras文件夾是否存在。

ls -a
cd .keras
vim keras.json # edit the keras.json file in editor and change the backend to tensorflow

它應該是這樣的。

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

轉義按鈕關閉編輯器,然后按:wq它應該可以工作

現在,如果您正在使用任何 conda 環境,請按照下面提到的步驟 1. 首先通過導航到 anaconda env 文件夾來定位環境變量

Anaconda3/envs/"name_of_your_conda_environment"/etc/conda/activate.d

它包含文件 keras_activate.bat,默認情況下該文件將theano 作為后端。 將值更改為 tensorflow 並保存文件。 KERAS_BACKEND=張量流

停用環境並再次激活它,即

source deactivate name_of_your_conda_environment
source activate name_of_your_conda_environment

希望這將解決所有 keras 后端張量流問題。

對於 Windows 用戶,在我的 Windows 10 中,Anaconda 創建 .bat 文件的方式似乎有點奇怪,或者至少它們是如何執行的。 它們顯示了在 cmd 中寫入的每個命令。
至少在我的情況下是這樣。
所以對我來說,它總是說: "KERAS_BACKEND=theano" ,但這並沒有被執行。

檢查這個:

在此路徑中: <your_conda_install_location>\\envs\\<your_environment_name>\\etc\\conda\\activate.d您將找到一個.bat文件。
(用你的系統特定名稱替換路徑引用中的<whatever>

還要檢查keras.json文件是否將后端設置為 tensorflow。

我的內容是:

:: Figure out the default Keras backend by reading the config file.
python %CONDA_PREFIX%\etc\keras\load_config.py > temp.txt
set /p KERAS_BACKEND=<temp.txt
del temp.txt

:: Try to use the default Keras backend.
:: Fallback to Theano if it fails (Theano always works).
python -c "import keras" 1> nul 2>&1
if errorlevel 1 (
    ver > nul
    set "KERAS_BACKEND=theano"
    python -c "import keras" 1> nul 2>&1
)

我只是添加了@echo off所以它沒有顯示所有代碼並添加了一些控制台輸出來告訴我實際執行了什么。 它同時作為一種調試器或證明它實際上沒有執行set "KERAS_BACKEND=theano"
(向下滾動以查看完整編輯的.bat文件)

最重要的是我補充說:

@echo off
:: message variables
set er0=used default Keras backend tensorflow
set er1=used fallback Keras backend theano

對於消息:
:: Figure out the default Keras backend by reading the config file.

if errorlevel 0 (
    echo %er0%
    )

if from :: Fallback to Theano if it fails (Theano always works)

echo %er1%


現在是.bat完整代碼以獲得更好的概述:

@echo off
:: message variables
set er0=used default Keras backend tensorflow
set er1=used fallback Keras backend theano

:: Figure out the default Keras backend by reading the config file.
python %CONDA_PREFIX%\etc\keras\load_config.py > temp.txt
set /p KERAS_BACKEND=<temp.txt
del temp.txt
if errorlevel 0 (
    echo %er0%
    )

:: Try to use the default Keras backend.
:: Fallback to Theano if it fails (Theano always works).
python -c "import keras" 1> nul 2>&1
if errorlevel 1 (
    ver > nul
    set "KERAS_BACKEND=theano"
    echo %er1%
    python -c "import keras" 1> nul 2>&1
)

因此,現在 cmd 上只有消息,說明是否使用了默認后端,或者在出現錯誤時是否使用了 theano 后端。
還要確保檢查keras.json是否將后端設置為 tensorflow。

我希望這可以幫助一些 Windows 用戶。

您不能顯式調用import keras 用:

import tensorflow as tf

現在您可以使用:

tf.keras

路徑"/anaconda2/envs/py2/etc/conda/activate.d"有一個文件keras_activate.sh

然后編輯它,刪除內容:

"if [ "$(uname)" == "Darwin" ]

然后

    # for Mac OSX
    export KERAS_BACKEND=tensorflow
elif [ "$(uname)" == "Linux" ]

然后

    # for Linux
    export KERAS_BACKEND=theano
fi". 

之后,添加行:

set "KERAS_BACKEND=tensorflow"

首先,您必須安裝以下python版本之一

然后使用以下命令安裝張量流作為后端引擎:

pip3 install --upgrade tensorflow

然后使用以下命令安裝 keras:

pip3 install keras

此處提供更多信息: http : //royalcrowntutorials.blogspot.com/2018/02/installing-tensor-flow-start-terminal.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM