在训练过程之后,我想通过加载创建的model.h5并执行评估过程来检查准确性。但是,我收到以下警告:/usr/local/lib/python3.5/dist-packages/keras/engine/saving.py:269: UserWarning: 在保存文件中未找到训练配置:模型未编译。手动编译。warnings.warn('在保存文件中没有找到训练配置:这个dist-packages/keras/engine/saving.py文件所以加载创建的模型的问题 - >这行代码train_model = load_model('model.h5')问题表明模型没有编译,但是,我做到了。optimizer = Adam(lr=lr, clipnorm=0.001)train_model.compile(loss=dummy_loss, optimizer=optimizer)我不明白我做错了什么。. . 请帮我!求救:-(
3 回答

慕神8447489
TA贡献1780条经验 获得超1个赞
介绍
我想补充 olejorgenb 的答案 - 对于特定场景,您不想训练模型,只需使用它(例如在生产中)。
“编译”的意思是“准备训练”,主要包括设置优化器。也可以之前保存过,加载保存的模型后就可以继续“相同”的训练了。
修复
但是,场景如何 - 我只想运行模型?好吧,使用compile=False
参数来load_model
喜欢:
trained_model = load_model('model.h5', compile=False)
如果不先.fit()
使用trained_model.compile(...)
,您将无法使用此模型,但最重要的是 - 警告会消失。
杂项笔记
顺便说一句,在我的 Keras 版本中,该参数include_optimizer
的默认值为True
. 这也适用于像Checkpoint
. 这意味着,在加载由 Keras 保存的模型时,您通常可以指望包含的优化器(情况除外:请参阅 Hull Gasper 的回答)。
但是,当您有一个不是由 Keras 训练的模型时(例如,当转换由 Darknet 训练的模型时),该模型将被保存为未编译。这会产生警告,您可以通过上述方式消除它。
添加回答
举报
0/150
提交
取消