我试图保存和加载的重量从模型我已经训练。
我用来保存模型的代码是。
TensorBoard(log_dir='/output')
model.fit_generator(image_a_b_gen(batch_size), steps_per_epoch=1, epochs=1)
model.save_weights('model.hdf5')
model.save_weights('myModel.h5')
字符串
让我知道,如果这是一个不正确的方式来做,或者如果有一个更好的方式来做。
但是当我试着用这个装子弹的时候
from keras.models import load_model
model = load_model('myModel.h5')
型
但我得到这个错误:
ValueError Traceback (most recent call
last)
<ipython-input-7-27d58dc8bb48> in <module>()
1 from keras.models import load_model
----> 2 model = load_model('myModel.h5')
/home/decentmakeover2/anaconda3/lib/python3.5/site-
packages/keras/models.py in load_model(filepath, custom_objects, compile)
235 model_config = f.attrs.get('model_config')
236 if model_config is None:
--> 237 raise ValueError('No model found in config file.')
238 model_config = json.loads(model_config.decode('utf-8'))
239 model = model_from_config(model_config,
custom_objects=custom_objects)
ValueError: No model found in config file.
型
有什么建议我可能做错了吗?先谢谢你。
5条答案
按热度按时间xiozqbni1#
下面是一个YouTube视频,它确切地解释了你想做什么:Save and load a Keras model
Keras提供了三种不同的保存方法。这些在上面的视频链接中描述(有例子),以及下面。
首先,您收到错误的原因是您错误地调用了
load_model
。若要保存和加载模型的权重,首先应使用
字符串
来保存权重,正如你所展示的。要加载权重,首先需要构建模型,然后在模型上调用
load_weights
,如型
另一种保存技术是
model.save(filepath)
。此save
函数可保存:要加载此已保存的模型,应使用以下命令:
型
最后,
model.to_json()
只保存模型的架构。若要加载体系结构,可以使用型
qfe3c7zg2#
加载权重需要先有模型。必须是:
字符串
如果你想保存和加载整个模型(包括模型的配置、权重和优化器状态,以便进一步训练):
型
m3eecexj3#
由于这个问题已经很老了,但仍然会出现在谷歌搜索中,我认为指出保存Keras模型的更新(和推荐)方法会很好。现在建议使用SavedModel格式,而不是像以前那样使用旧的h5格式保存它们,SavedModel格式实际上是一个包含模型配置和权重的字典。
更多信息可以在这里找到:https://www.tensorflow.org/guide/keras/save_and_serialize
要保存和加载的代码段可以在下面找到:
字符串
以下示例的输出:
的数据
lrpiutwd4#
从头开始加载模型需要从头开始构建模型,因此您可以尝试首先使用
model.to_json()
保存模型体系结构字符串
使用保存模型重量
型
为了加载权重,您需要首先使用保存的json文件重建模型。
型
然后使用
型
你现在可以编译和测试模型,不需要重新训练,例如
型
xxls0lw85#
字符串
保存权重回调函数如下:
型