保存Keras模型-用户警告:第XX层已传递不可序列化的关键字参数

时间:2018-12-13 11:45:55

标签: python tensorflow keras

我刚刚用Keras训练并完成了第一个序列模型的序列,现在想保存它,以便以后可以加载模型并使用它(而不必每次都进行训练)。保存时,我会这样做:

model.save_weights('models/model_weights.h5')
with open('models/model_architecture.json', 'w') as f:
    f.write(model.to_json())

但是,这样做会产生一系列类型的用户警告(每层或多或少):

path/to/site-packages/keras/engine/topology.py:2379: UserWarning: Layer lstm_15 was 
passed non-serializable keyword arguments: {'initial_state': [<tf.Tensor 's0_7:0' 
shape=(?, 64) dtype=float32>, <tf.Tensor 'c0_7:0' shape=(?, 64) dtype=float32>]}. 
They will not be included in the serialized model (and thus will be missing at 
deserialization time).
str(node.arguments) + '. They will not be included '

即使只是警告,也确实推迟了模型和加载模型后的准确性。

经过培训(做出良好的预测等)后,一切工作都非常好,只是失败的一部分。我该怎么办?其他人也经历过同样的事情并以某种方式解决了吗?有解决方法吗?我给不同图层命名的名称可能有问题吗?

1 个答案:

答案 0 :(得分:2)

您可以保存模型的“代码”,也许是一个.py文件,以完全按照原样创建模型。

然后您加载权重:model.load_weights('models/model_weights.h5')