在Python中更改keras floatx(默认浮点类型)

时间:2018-05-29 07:57:16

标签: python keras

我正在寻找一种直接在python中更改floatxkeras的方法。 floatx是默认的float类型(float16float32 ...。)

配置存储在json文件中:

$HOME/.keras/keras.json

但我正在寻找一种方法来改变我的python程序中的配置而不改变配置文件本身。

There is a similiar question,其中有人要求改变后端,后端也存储在keras.json中。 接受的答案涉及设置环境变量KERAS_BACKEND并重新加载keras模块,但我没有为floatx找到类似的环境变量。

2 个答案:

答案 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.jsonas described in documentation中使用。

执行此操作最少的方法是确实使用该文件并重新加载模块。

使用K.set_floatx,至少对我来说,模型的左侧部分保持不变(即使sef_floatx是我在新的python内核中加载keras模型后做的第一件事)

即使我在设置精度为float16时遇到了另一个错误:我的所有损失函数都很快变为nan。不幸的是我不得不回到float32(默认值)才有可能接受培训。