我试图从我训练过的模型中保存和加载重量.
用于保存模型的代码是.
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')
Run Code Online (Sandbox Code Playgroud)
如果这是一种不正确的方式,或者是否有更好的方法,请告诉我.
但当我尝试加载它们时,使用它,
from keras.models import load_model
model = load_model('myModel.h5')
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
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.
Run Code Online (Sandbox Code Playgroud)
关于我可能做错什么的任何建议?先感谢您.
bla*_*tor 65
以下是YouTube视频,可准确说明您要执行的操作:保存并加载Keras模型
Keras提供三种不同的保存方法.这些在上面的视频链接(带有示例)以及下面进行了描述.
首先,您收到错误的原因是您的呼叫load_model不正确.
要保存和加载模型的权重,您首先要使用
model.save_weights('my_model_weights.h5')
Run Code Online (Sandbox Code Playgroud)
如您所示,保存权重.要加载权重,首先需要构建模型,然后调用load_weights模型,如
model.load_weights('my_model_weights.h5')
Run Code Online (Sandbox Code Playgroud)
另一种节约技术是model.save(filepath).此save功能可以保存:
要加载此已保存的模型,您将使用以下内容:
from keras.models import load_model
new_model = load_model(filepath)'
Run Code Online (Sandbox Code Playgroud)
最后,model.to_json()仅保存模型的体系结构.要加载架构,您可以使用
from keras.models import model_from_json
model = model_from_json(json_string)
Run Code Online (Sandbox Code Playgroud)
要加载重量,您需要先拥有模型.肯定是:
existingModel.save_weights('weightsfile.h5')
existingModel.load_weights('weightsfile.h5')
Run Code Online (Sandbox Code Playgroud)
如果你想保存并加载整个模型(通常这不起作用,我不知道为什么):
model.save_model('filename')
model = load_model('filename')
Run Code Online (Sandbox Code Playgroud)
由于这个问题已经很老了,但仍然出现在谷歌搜索中,我认为最好指出保存 Keras 模型的更新(和推荐)方法。现在建议使用 SavedModel 格式,而不是像之前那样使用旧的 h5 格式保存它们,它实际上是一个包含模型配置和权重的字典。
更多信息可以在这里找到: https: //www.tensorflow.org/guide/keras/save_and_serialize
要保存和加载的片段可以在下面找到:
model.fit(test_input, test_target)
# Calling save('my_model') creates a SavedModel folder 'my_model'.
model.save('my_model')
# It can be used to reconstruct the model identically.
reconstructed_model = keras.models.load_model('my_model')
Run Code Online (Sandbox Code Playgroud)
其输出示例: