我正在寻找一种直接在python中更改floatx
中keras
的方法。
floatx
是默认的float
类型(float16
,float32
...。)
配置存储在json
文件中:
$HOME/.keras/keras.json
但我正在寻找一种方法来改变我的python程序中的配置而不改变配置文件本身。
There is a similiar question,其中有人要求改变后端,后端也存储在keras.json
中。
接受的答案涉及设置环境变量KERAS_BACKEND
并重新加载keras
模块,但我没有为floatx
找到类似的环境变量。
答案 0 :(得分:2)
Turns out keras.backend has function for setting and retrieving the floatx value(在链接中向下滚动):
keras.backend.floatx()
>>> 'float32'
keras.backend.set_floatx('float16')
keras.backend.floatx()
>>> 'float16'
此外,在更改后端时使用set_floatx后不允许重新加载keras模块,因为keras只会重新读取配置文件并返回其先前的值:
keras.backend.floatx()
>>> 'float32'
keras.backend.set_floatx('float16')
keras.backend.floatx()
>>> 'float16'
importlib.reload(keras.backend)
keras.backend.floatx()
>>> 'float32'
答案 1 :(得分:1)
嗯,floatx
var当然应该在keras.json
,as described in documentation中使用。
执行此操作最少的方法是确实使用该文件并重新加载模块。
使用K.set_floatx
,至少对我来说,模型的左侧部分保持不变(即使sef_floatx
是我在新的python内核中加载keras模型后做的第一件事)
即使我在设置精度为float16时遇到了另一个错误:我的所有损失函数都很快变为nan
。不幸的是我不得不回到float32(默认值)才有可能接受培训。