【发布时间】:2017-10-11 23:11:07
【问题描述】:
我使用 Keras 训练了一个 DNN。但是,我无法保存和加载模型。
from keras.models import load_model
model.save('/home/ubuntu/pynb/savedmodel.tfl')
#model.load('/home/ubuntu/pynb/savedmodel.tfl')
但我发现不是 savedmodel.tfl 文件,而是 3 个扩展名为 .meta、.index 和 .data.00000-of-00001 的文件。 因此,当我尝试使用 model.load 加载时,它说找不到该文件。
我还尝试了 SO 上建议的其他替代方案
model_json = model.to_json()
但我得到一个错误 AttributeError:“DNN”对象没有属性“to_json”
我使用的是 Keras 2.0.4 版。
请建议如何正确保存以及如何从3个文件中加载?
编辑:(我正在添加与构建模型相关的代码)
net = tflearn.input_data([None, size_of_each_vector])
net = tflearn.embedding(net, input_dim=vocab_size, output_dim=128)
net = tflearn.lstm(net, 128, dropout=0.6) # Set the dropout to 0.6
net = tflearn.fully_connected(net, no_of_unique_y_labels, activation='softmax') # relu or softmax
net = tflearn.regression(net,
optimizer='adam',
learning_rate=1e-4,
loss='categorical_crossentropy')
model = tflearn.DNN(net, tensorboard_verbose=0)
model.fit(X_train_padded_seqs, y_train,
validation_set=(X_test_padded_seqs, y_test),
n_epoch=n_epoch,
show_metric=True,
batch_size=100)
【问题讨论】:
-
model.save() 保存为 HDF5 文件,那么如果保存为 a.h5 扩展名而不是 .tfl 会发生什么?另请注意, model.to_json() 仅保存模型的体系结构。它不会像 model.save() 那样保存它的权重或训练配置。话虽如此,模型是什么类型的对象?鉴于错误消息指出 DNN 对象没有 to_json(),这表明您的模型不是 Keras Sequential 或 Functional 模型之一。您能否分享显示正在实例化的模型的代码?
-
感谢您的回复。即使我有 .h5 作为扩展名(保存 3 个文件),错误/问题也是相同的,是的,它是一个 DNN 对象。我已经编辑了问题以添加显示正在实例化的模型的代码
-
我是一个新手,我有点期待使用 tflearn 构建的模型可以与 Keras 一起使用。如果这个假设是错误的,我可以要求您发布如何使用 Keras 构建相同的模型吗?
-
是的,您需要一个 Keras 模型才能使用 Keras 模型保存功能。 Keras 实际上是一种高级语言,它将 TF 代码包装成相对更易于阅读和使用的代码。我建议从 Keras Sequential 模型开始。将您的 TF 模型映射到 Keras Sequential 模型应该不难。 Keras Sequential 模型的快速指南在这里:keras.io/getting-started/sequential-model-guide 我还有一个 YouTube 播放列表,用于开始使用 Keras:youtube.com/playlist?list=PL_SSujepRkqyjjbWnXQBzKXXm86UQ53Ic
-
请添加标签。
标签: tensorflow deep-learning keras keras-2