解决ValueError: No model found in config file.

当尝试使用load_model()加载.h5模型时遇到'Nomodelfoundinconfigfile.'错误,通常是因为只保存了权重而未保存模型结构。解决方案包括:1)重新定义模型结构后再加载;2)重新训练模型,保存完整模型(不设置save_weights_only=True)。建议始终保存模型结构和权重以避免此类问题。
DCT-Net 人像卡通化模型GPU镜像

DCT-Net 人像卡通化模型GPU镜像

图片生成
AI应用
PyTorch

用户输入一张人物图像,实现端到端全图卡通化转换,生成二次元虚拟形象,返回卡通化后的结果图像。

有朋友给我看了一个bug:
No model found in config file.

使用load_model()加载.h5出现上述问题。我第一反应是缺少了模型结构,也就是下述这样的东西↓

(本文仅记录,防止更多人踩坑。如有错误的地方,恳请多多指教以完善。)
在这里插入图片描述

1 报错提示

No model found in config file.

2 问题出现的过程

使用load_model()方法保存模型

3 问题原因分析

看了代码,就两行。加上用的包(from tensorflow.keras.models import load_model),也才三行,是的,只是个加载模型的过程。

from tensorflow.keras.models import load_model
filepath="./CNN.weights.h5"
model=load_model(filepath)

这个代码并没有问题,毕竟我也经常用,比较熟。那么,问题只能出现在.h5保存的方式和加载模型的方式上了,我们逐一排除。

4 解决方式

保存模型时,会有以下一些主要的保存方式:
①save()→保存模型参数和网络结构
②save_weights()→仅保存模型参数。
③tf.keras.callbacks.ModelCheckpoint()→配置参数后,训练过程中都可以随时保存。

看了下朋友生成模型的代码,他在model.fit中采用了③的方式:

tf.keras.callbacks.ModelCheckpoint(filepath=filepath,monitor='val_accuracy',verbose=1,save_best_only=True,save_weights_only=True)

果不其然,save_weights_only=True,这就是报错的原因,缺少网络图结构,因为代码仅保存参数权重(only!!!)。所以,那就好办了。

4.1 解决方式一:加入网络图结构

为了匹配.h5文件,将网络图结构再写一遍,然后load_model就好了。

4.2 解决方式二:重新保存个新的.h5文件

去掉save_weights_only=True或者把True改为False,重新训练模型并保存.h5文件。(从根本上解决,以后保存模型建议将图结构和参数一起存下来,就多占用点内存而已,平时的玩具模型不是很大,何必偷懒给自己找麻烦呢?┗|`O′|┛ 嗷~~)

tf.keras.callbacks.ModelCheckpoint(filepath=filepath,monitor='val_accuracy',verbose=1,save_best_only=True)

报错也消失了
在这里插入图片描述

总结

仅保存网络参数,使用load_weights()。
保存图结构和网络参数,使用load_model()(保存的.h5文件更大);
不混淆使用一般不会报错
比对如下:
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

DCT-Net 人像卡通化模型GPU镜像

DCT-Net 人像卡通化模型GPU镜像

图片生成
AI应用
PyTorch

用户输入一张人物图像,实现端到端全图卡通化转换,生成二次元虚拟形象,返回卡通化后的结果图像。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sinysama

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值