keras忽略$ HOME / .keras / keras.json文件中的值

时间:2017-03-27 19:17:58

标签: python theano keras

我知道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 "<string>", line 1, in <module>
  File "/Users/antalek/anaconda/envs/ENVPy3/lib/python3.5/site-packages/keras/__init__.py", line 3, in <module>
    from . import activations
  File "/Users/antalek/anaconda/envs/ENVPy3/lib/python3.5/site-packages/keras/activations.py", line 3, in <module>
    from . import backend as K
  File "/Users/antalek/anaconda/envs/ENVPy3/lib/python3.5/site-packages/keras/backend/__init__.py", line 34, in <module>
    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/<my name>/anaconda/envs/ENVPy3/bin/python

也是安装了Keras的conda虚拟环境。

1 个答案:

答案 0 :(得分:12)

同样的问题,系统设置:

  • Ubuntu 16.04
  • Anaconda + Python 3.6
  • Keras 2.0.2

更改后端的唯一方法是使用KERAS_BACKEND环境变量。 Json字段被忽略。

编辑: 问题是Anaconda,开放.pos_container

anaconda3/envs/ENV-NAME/etc/conda/activate.d/keras_activate.sh

你会看到,对于MAC和Theano for Linux,强制使用tensorflow。

我不知道是谁创建了这个文件,keras或anaconda,以及这种强制背后的原因。我只是无视它并按自己的方式行事:)