我正在尝试序列化dill
中的对象:
import dill
import keras
with open('temp.pkl', 'w') as f:
dill.dump({'clf':keras.optimizers.RMSprop(lr=20.0)}, f)
with open('temp.pkl', 'r') as f:
d = dill.load(f) # errors here
发生了我从未见过的错误:
PicklingError: Can't pickle <class 'keras.backend.mxnet_backend.get_optimizers.<locals>.RMSprop'>: it's not found as keras.backend.mxnet_backend.get_optimizers.<locals>.RMSprop
没有被发现是什么意思?
注意:要重现此内容,需要安装dill
和keras
。
有趣的事实:
如果我使用tensorflow
的自定义keras api:
import tensorflow as tf
...
with open('temp.yml', 'wt') as f:
yaml.dump({'clf':tf.keras.optimizers.RMSprop}, f)
...
它工作正常。