Python 如何让Keras在Anaconda中使用Tensorflow后端?
我已经在我的Anaconda环境中安装了tensorflow gpu。它们都很好用 现在我正在尝试使用Tensorflow后端安装Keras。根据我刚才运行的:Python 如何让Keras在Anaconda中使用Tensorflow后端?,python,tensorflow,anaconda,backend,keras,Python,Tensorflow,Anaconda,Backend,Keras,我已经在我的Anaconda环境中安装了tensorflow gpu。它们都很好用 现在我正在尝试使用Tensorflow后端安装Keras。根据我刚才运行的: pip install keras 但它没有安装keras,于是我尝试: conda install -c conda-forge keras=2.0.2 然后,我现在可以在python中导入keras。但问题是,它总是使用Theano后端。我试图改变这一点,但不知道如何去做 我还尝试编辑文件~/.keras,但实际上默认后端已经是
pip install keras
但它没有安装keras,于是我尝试:
conda install -c conda-forge keras=2.0.2
然后,我现在可以在python中导入keras。但问题是,它总是使用Theano后端。我试图改变这一点,但不知道如何去做
我还尝试编辑文件~/.keras,但实际上默认后端已经是tensorflow了
请帮忙。。非常感谢你 之所以发生这种情况,是因为keras conda forge包将一个文件放入
${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
在康达锻造厂安装keras后出现了同样的问题
keras.json
已经有tensorflow:
{
"floatx": "float32",
"epsilon": 1e-07,
"backend": "tensorflow",
"image_data_format": "channels_last"
}
但是激活tensorflow\u keras
(其中“tensorflow\u keras
”是环境名称),将后端更改为No:
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
并将编号更改为tensorflow:
set "KERAS_BACKEND=tensorflow"
有一个类似的问题,似乎如果
~/.keras/keras.json
不可访问,keras正在使用/tmp/.keras/keras.json
,尽管这似乎是一项工作,如果你像我一样多地使用conda envs,我分别为Tensorflow和Theano提供了环境。它将减少每次激活时环境变量的大量重复设置和取消设置
根据康达环境网页
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
echo 'unset KERAS_BACKEND' > ./etc/conda/deactivate.d/env_vars.sh
4) 编辑./etc/conda/deactivate.d/env_vars.sh如下:
echo 'export KERAS_BACKEND=theano' > ./etc/conda/activate.d/env_vars.sh
echo 'unset KERAS_BACKEND' > ./etc/conda/deactivate.d/env_vars.sh
在Windows 10上的多用户安装中,Anaconda环境激活文件为:
C:\Users\<user name>\AppData\Local\Continuum\Anaconda3\envs\<environment name>\etc\conda\activate.d\keras_activate.bat
C:\Users\\AppData\Local\Continuum\Anaconda3\envs\\etc\conda\activate.d\keras\u activate.bat
只需将
和
更改为匹配即可。首先,您必须安装以下python版本之一
然后使用以下命令将tensor flow安装为后端引擎:
pip3 install --upgrade tensorflow
pip3 install keras
然后使用以下命令安装keras:
pip3 install --upgrade tensorflow
pip3 install keras
此处提供更多信息:适用于使用Anaconda的Windows用户。打开Anaconda提示符并键入:
set "KERAS_BACKEND=tensorflow"
这应该能奏效。
如果使用Jupyter笔记本,您需要重新启动它。在Mac系统中,转到终端并导航到用户配置文件,检查.keras文件夹是否存在
ls -a
cd .keras
vim keras.json # edit the keras.json file in editor and change the backend to tensorflow
应该是这样的
按退出按钮关闭编辑器,然后按退出按钮:wq
应该行得通
现在,如果您使用的是任何conda环境,请遵循以下提到的步骤
1.首先通过导航到anaconda env文件夹找到环境变量
Anaconda3/envs/“您的环境名称”/etc/conda/activate.d
它包含文件keras_activate.bat,默认情况下,该文件具有theano as后端。
将该值更改为tensorflow并保存文件。
KERAS_BACKEND=tensorflow
停用环境并再次激活它
i、 e
希望这将解决所有keras后端tensorflow问题 路径
“/anaconda2/envs/py2/etc/conda/activate.d”中有一个文件keras\u activate.sh
然后编辑它,删除内容:
"if [ "$(uname)" == "Darwin" ]
然后
然后
之后,添加以下行:
set "KERAS_BACKEND=tensorflow"
对于Windows用户,在我的Windows 10中,Anaconda创建.bat文件的方式似乎有点奇怪,或者至少它们是如何执行的。它们在cmd中显示写入的每个命令。
至少在我的情况下是这样。
所以对我来说,它总是说:“KERAS\u BACKEND=theano”
,但这并没有被执行。
检查此项:
在此路径中:\envs\\etc\conda\activate.d
您将找到一个.bat
文件。
(用您的系统特定名称替换我创建的路径引用中的
)
还要检查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
)
对于消息:
在的末尾:通过读取配置文件,找出默认的Keras后端。
:
if errorlevel 0 (
echo %er0%
)
在if from:如果失败,则返回到Theano(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.
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
)
@echo关闭
::消息变量
设置er0=使用的默认Keras后端tensorflow
设置er1=已使用的备用Keras后端编号
::通过读取配置文件,找出默认的Keras后端。
python%CONDA\u PREFIX%\etc\keras\load\u config.py>temp.txt
设置/p KERAS_BACKEND=num2>&1
如果错误级别为1(
ver>nul
设置“KERAS_BACKEND=theano”
回音%1%
python-c“importkeras”1>nul2>&1
)
因此,现在只有cmd上的消息说明是否使用了默认后端,或者在出现错误时是否使用了theano后端。
还要确保检查keras.json
的后端是否设置为tensorflow。
我希望这能帮助一些windows用户。您不能显式调用
导入keras
。
使用:
将tensorflow导入为tf
现在您可以使用:
tf.keras
你好@nehal,谢谢!你周围的工作方法
echo %er1%
@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
)