我刚刚用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 '
即使只是警告,也确实推迟了模型和加载模型后的准确性。
经过培训(做出良好的预测等)后,一切工作都非常好,只是失败的一部分。我该怎么办?其他人也经历过同样的事情并以某种方式解决了吗?有解决方法吗?我给不同图层命名的名称可能有问题吗?
答案 0 :(得分:2)
您可以保存模型的“代码”,也许是一个.py
文件,以完全按照原样创建模型。
然后您加载权重:model.load_weights('models/model_weights.h5')
。