tensorflow2模型的保存与加载

保存整个模型:

整个模型的保存

1.整个模型可以以两种不同的文件格式(SavedModel 和 HDF5)进行保存
2.调用 model.save 将保存模型的结构,权重和训练配置保存在单个文件/文件夹中。
3.导出模型,以便在不访问原始 Python 代码*的情况下使用它。
4.优化器状态(optimizer-state)已经恢复,可以从中断的位置恢复训练。

这种方式加载的时候会直接返回一个model,而其他方式是要先创建model再加载

#第一种
#保存到文件夹中
dir_name="save_model/mymodel"
model.save(dir_name)
new_model=tf.keras.models.load_model(dir_name)


#第二种(HDF5文件)
#保存到文件中
file_name="my_model.h5"
model.save(file_name) 
new_model=tf.keras.models.load_model(file_name)

手动保存权重:

默认情况下, tf.keras 和 save_weights 使用 TensorFlow checkpoints 格式 .ckpt 扩展名

dir_name="./checkpoints/my_checkpoint"
model.save_weights(dir_name)
model.load_weights(dir_name)

在训练期间保存模型(以 checkpoints 形式保存):

使用训练好的模型而无需从头开始重新训练,或在打断的地方开始训练,以防止训练过程没有保存

Checkpoints 包含:
一个或多个包含模型权重的分片。
索引文件,指示哪些权重存储在哪个分片中。
如果你只在一台机器上训练一个模型,你将有一个带有后缀的碎片: .data-00000-of-00001

checkpoint_path = "training_1/cp.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
#传递到model.fit()中的callbacks参数中即可,它决定了模型保存如何保存
cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path,
                                                 save_weights_only=True,
                                                 verbose=1)
                                              
model.load_weights(checkpoint_path)                                           
# 在文件名中包含 epoch (使用 `str.format`)
checkpoint_path = "training_2/cp-{epoch:04d}.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)

# 创建一个回调,每 5 个 epochs 保存模型的权重
cp_callback = tf.keras.callbacks.ModelCheckpoint(
    filepath=checkpoint_path,
    verbose=1,
    save_weights_only=True,
    period=5)

latest = tf.train.latest_checkpoint(checkpoint_dir)
model.load_weights(latest)

保存自定义对象:

SavedModel 能够保存自定义对象,例如子类化模型和自定义层,而无需原始代码。HDF5要自定义一些方法。


API总结:

保存方式保存加载
modelmodel.save()tf.keras.models.load_model()
手动model.save_weights()model.load_weights()
checkpointstf.keras.callbacks.ModelCheckpoint()model.load_weights()

学习文章链接(需翻墙): tensorflow2官方教程——保存和恢复模型.

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值