keras 忽略 $HOME/.keras/keras.json 文件中的值
keras ignoring values in $HOME/.keras/keras.json file
我知道 Keras 的默认后端已从 Theano 切换到 TensorFlow,但使用 Theano 的开发版本我可以在 GPU 上使用 OpenCL 进行训练(我有 AMD 卡)。
但是,当我导入 Keras 时,它只使用 TensorFlow 后端即使我更改了 Keras 配置文件中的值:
~ $ 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
- 蟒蛇 Python v 3.5
- 凯拉斯 v 2.0.2
我想让 Keras 使用 Theano 作为默认后端。有人知道怎么设置吗?
编辑:
回答@Marcin Możejko 的问题:
~ $ which python
/Users/<my name>/anaconda/envs/ENVPy3/bin/python
Keras也安装在哪个conda虚拟环境中
同样的问题,系统设置:
- Ubuntu16.04
- 蟒蛇 + Python 3.6
- 凯拉斯 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 强制使用 tensorflow,Linux 使用 Theano。
我不知道是谁创建了这个文件,keras 还是 anaconda,也不知道这种强制背后的原因。我只是忽略它并按照自己的方式行事:)
我知道 Keras 的默认后端已从 Theano 切换到 TensorFlow,但使用 Theano 的开发版本我可以在 GPU 上使用 OpenCL 进行训练(我有 AMD 卡)。
但是,当我导入 Keras 时,它只使用 TensorFlow 后端即使我更改了 Keras 配置文件中的值:
~ $ 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
- 蟒蛇 Python v 3.5
- 凯拉斯 v 2.0.2
我想让 Keras 使用 Theano 作为默认后端。有人知道怎么设置吗?
编辑:
回答@Marcin Możejko 的问题:
~ $ which python
/Users/<my name>/anaconda/envs/ENVPy3/bin/python
Keras也安装在哪个conda虚拟环境中
同样的问题,系统设置:
- Ubuntu16.04
- 蟒蛇 + Python 3.6
- 凯拉斯 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 强制使用 tensorflow,Linux 使用 Theano。
我不知道是谁创建了这个文件,keras 还是 anaconda,也不知道这种强制背后的原因。我只是忽略它并按照自己的方式行事:)