我知道Keras的默认后端已经从Theano切换到TensorFlow,但是使用开发版本的Theano,我可以使用OpenCL在GPU上进行训练(我有一张AMD卡).
但是,当我导入Keras时,即使我更改了Keras配置文件中的值,它也仅使用TensorFlow后端:
~ $ cat $HOME/.keras/keras.json {"epsilon": 1e-07, "floatx": "float32", "backend": "theano"} ~ $ python -c 'import keras' Using TensorFlow backend. ~ $ KERAS_BACKEND=theano python -c 'import keras' Using Theano backend. Mapped name None to device opencl0:2: AMD Radeon R9 M370X Compute Engine
另外,我知道Keras在导入后正在读取配置文件,因为如果我填写一些无效的值,"backend"
我会收到错误:
~ $ cat $HOME/.keras/keras.json {"epsilon": 1e-07, "floatx": "float32", "backend": "foobar"} ~ $ python -c 'import keras' Traceback (most recent call last): File "", line 1, in File "/Users/antalek/anaconda/envs/ENVPy3/lib/python3.5/site-packages/keras/__init__.py", line 3, in from . import activations File "/Users/antalek/anaconda/envs/ENVPy3/lib/python3.5/site-packages/keras/activations.py", line 3, in from . import backend as K File "/Users/antalek/anaconda/envs/ENVPy3/lib/python3.5/site-packages/keras/backend/__init__.py", line 34, in assert _backend in {'theano', 'tensorflow'} AssertionError
系统细节:
Mac OSX 10.11.6
Anaconda Python v 3.5
Keras v 2.0.2
我想让Keras使用Theano作为默认后端.有谁知道如何设置它?
编辑:
要回答@MarcinMożejko的问题:
~ $ which python /Users//anaconda/envs/ENVPy3/bin/python
这也是Keras安装的conda虚拟环境.
同样的问题,系统设置:
Ubuntu 16.04
Anaconda + Python 3.6
Keras 2.0.2
更改后端的唯一方法是使用KERAS_BACKEND环境变量.Json字段被忽略.
编辑:问题是Anaconda,开放 anaconda3/envs/ENV-NAME/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
您将看到强制MAC的张量流和Linux的Theano.
我不知道是谁创建了这个文件,keras或anaconda,以及这种强制背后的原因.我只是无视它并按自己的方式行事:)