深度学习-Tensorflow2.2-模型保存与恢复{9}-保存与恢复-21

本文详细介绍了如何使用Tensorflow2.2的Keras API来保存和恢复模型,包括整个模型、模型结构、权重,以及在训练期间的检查点保存。强调了HDF5和SavedModel两种保存格式的区别和使用场景,并提供了相应的代码示例。
摘要由CSDN通过智能技术生成
模型保存(tf.keras保存模型)
  • 保存
    • Tf.Keras 模型保存为 HDF5 文件
    • Keras 使用了 h5py Python 包。
    • h5py 是 Keras 的依赖项,应默认被安装
  • 保存/加载整个模型
    • 不建议使用 pickle 或 cPickle 来保存模型。

    • 使用 model.save(‘path/to/my_model.h5’) 将整个模型保存到单个 HDF5 文件中。

    • 包括以下内容:

      • · 模型的结构,允许重新创建模型
      • · 模型的权重
      • · 训练配置项(损失函数,优化器)
      • · 优化器状态,允许准确地从你上次结束的地方继续训练。
    • 保存/加载整个模型可使我们在不访问原始 python 代码的情况下使用模型。还可以从中断的位置恢复训练。

    • 保存完整模型会非常有用——我们可以在 TensorFlow.js (HDF5, Saved Model) 加载保存的模型,然后在 web 浏览器中训练和运行它们,或者使用 TensorFlow Lite 将它们转换为在移动设备上运行(HDF5, Saved Model)

    • 重新创建完全相同的模型,包括其权重和优化程序new_model = tf.keras.models.load_model(‘my_model.h5’)

    • Keras 通过检查网络结构来保存模型。

    • 目前,它无法保存 Tensorflow 优化器(调用自tf.train)。使用这些优化器的时候,需要在加载后重新编译模型,否则将失去优化器的状态。

    • 通过 saved_model 格式保存(实验性的,未来可能变化):tf.keras.experimental.export_saved_model(model, saved_model_path)

    • 通过 saved_model 格式恢复:new_model =tf.keras.experimental.load_from_saved_model(sav
      ed_model_path)

    • 通过 saved_model 格式恢复:saved_model 格式包含完整的TensorFlow程序,是tensorflow对象的独立序列化格式,包括权重和计算。它不需要运行原始模型构建代码,这使得它可用于共享或部署(使用TFLite,TensorFlow.js,TensorFlow服务)

  • 只保存/加载模型的结构
    • 保存模型的结构,而非其权重或训练配置项:Config = model.get_config()
    • 得到的是一个Python Dict,它使我们可以重新创建相同的结构的模型
    • 加载模型的结构,而非其权重或训练配置项:Reinitialized_model = tf.keras.Model.from_config(config)
    • 保存模型的结构,也可以使用json字符串,方便保存到磁盘:json_string = model.to_json()
    • Reinitialized_model = tf.keras.models.model_from_json(json_string )
    • 只保存模型的权重:model.save_weights(‘my_model_weights.h5’)
    • 只加载模型的权重 :model.load_weights(‘my_model_weights.h5’)
    • 注意保存和加载模型的权重 :既可以使用HDF5格式也可以使用SavedModel格式,取决于后缀,也可以通过 save_format参数来显式指定。
    • 参数可以取: tf 或 h5
  • 在训练期间保存模型
    • tf.keras.callbacks.ModelCheckpoint 允许在训练的过程中和结束时回调保存的模型。
例子
import os
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'
gpu_ok = tf.test.is_gpu_available()
print("tf version:", tf.__version__)
print("use GPU", gpu_ok) # 判断是否使用gpu进行训练

在这里插入图片描述

# 下载数据集并划分为训练集和测试集
(train_image,train_lable),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data()
# 归一化
train_image=train_image/255
test_image=test_image/255
# 建立模型
model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28))) # 28*28
model.add(tf.keras.layers.Dense(128,activation="relu"))
model.add(tf.keras.layers.Dense(10,activation="softmax"))
# 编译模型
model.compile(optimizer="adam",
             loss="sparse_categorical_crossentropy",
             metrics=["acc"<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值