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

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,但实际上默认后端已经是

我已经在我的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 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
)