tensorflow2.0 下keras模型的保存与加载

本文总结了在TensorFlow2.0的Keras框架下,如何保存和加载训练好的神经网络模型,特别是对于子类化模型的处理。在训练自定义的resnet18模型后,通过代码示例展示了保存模型权重的方法,并强调了加载权重前需重建相同架构的重要性。
摘要由CSDN通过智能技术生成

在前面的博文tensorflow2.0自制神经网络数据集及预测结果(混淆矩阵)可视化中,我们用了谷歌训练好的网络模型DesNet121来训练我们的图片,当用自己的电脑和自写的网络架构来训练图片时,我们需要及时的保存我们训练好的网络,以便以后测试或者接着训练。现在网上有很多的博客介绍了在keras框架下如何保存和加载训练好的模型,在此我做一个总结吧,也方便我以后查看,不用到处去别的地方找了。
我将DesNet网络换为自己的resnet18以后开始训练,训练结束后在代码的最后加了一行

model.save('my_model.h5')#保存整个模型和权重

但是却报错了:
在这里插入图片描述这样报错的原因是HDF5格式要求模型是函数式(Functional)模型或者是顺序式(Sequential)模型,它不适用于子类化模型。什么意思?举例说明:

#顺序式模型
model=tf.keras.models.Sequential()
model.add(tf.keras.layres.Dense(128,activation='relu'))
model.add(tf.keras.layres.Dense(256,activation='relu'))
model.add(tf.keras.layres.Dense(10,activation='softmax'))
model.compile(optimizer=optimizers.Adam(lr=0.01),loss=losses.CategoricalCrossentropy(from_logits=True),metrics=['accuracy'])
model.fit(x_train,y_yrain,validation_data=(x_test, y_test),epochs=20)
model.evaluate(x_test, y_test)
model.save('my_model.h5')
#在这样的顺序式下可以直接保存模型的架构和整个训练的权重

#函数式模型
inputs=tf.keras.layers.Input(shape=(28,28))
x=tf.keras.layers.Dense(32,activation='relu')(inputs)
x=tf.keras.layers.Dense(64,activation='relu')
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值