Tensorflow教程笔记
-
基础
TensorFlow 基础
TensorFlow 模型建立与训练
基础示例:多层感知机(MLP)
卷积神经网络(CNN)
循环神经网络(RNN)
深度强化学习(DRL)
Keras Pipeline
自定义层、损失函数和评估指标
常用模块 tf.train.Checkpoint :变量的保存与恢复
常用模块 TensorBoard:训练过程可视化
常用模块 tf.data :数据集的构建与预处理
常用模块 TFRecord :TensorFlow 数据集存储格式
常用模块 tf.function :图执行模式
常用模块 tf.TensorArray :TensorFlow 动态数组
常用模块 tf.config:GPU 的使用与分配 -
大规模训练与加速
TensorFlow 分布式训练
使用 TPU 训练 TensorFlow 模型 -
附录
强化学习基础简介
为了将训练好的机器学习模型部署到各个目标平台(如服务器、移动端、嵌入式设备和浏览器等),我们的第一步往往是将训练好的整个模型完整导出(序列化)为一系列标准格式的文件。在此基础上,我们才可以在不同的平台上使用相对应的部署工具来部署模型文件。TensorFlow 提供了统一模型导出格式 SavedModel,使得我们训练好的模型可以以这一格式为中介,在多种不同平台上部署,这是我们在 TensorFlow 2 中主要使用的导出格式。同时,基于历史原因,Keras 的 Sequential 和 Functional 模式也有自有的模型导出格式,我们也一并介绍。
使用 SavedModel 完整导出模型
在前节中我们介绍了 Checkpoint,它可以帮助我们保存和恢复模型中参数的权值。而作为模型导出格式的 SavedModel 则更进一步,其包含了一个 TensorFlow 程序的完整信息:不仅包含参数的权值,还包含计算的流程(即计算图)。当模型导出为 SavedModel 文件时,无须模型的源代码即可再次运行模型,这使得 SavedModel 尤其适用于模型的分享和部署。后文的 TensorFlow Serving(服务器端部署模型)、TensorFlow Lite(移动端部署模型)以及 TensorFlow.js 都会用到这一格式。
Keras 模型均可方便地导出为 SavedModel 格式。不过需要注意的是,因为 SavedModel 基于计算图,所以对于使用继承 tf.keras.Model 类建立的 Keras 模型,其需要导出到 SavedModel 格式的方法(比如 call )都需要使用 @tf.function 修饰( @tf.function 的使用方式见 前文 )。然后,假设我们有一个名为 model 的 Keras 模型,使用下面的代码即可将模型导出为 SavedModel:
tf.saved_model.save(model, "保存的目标文件夹名称")
在需要载入 SavedModel 文件时,使用
model = tf.saved_model.load("保存的目标文件夹名称")
即可。
对于使用继承
tf.keras.Model类建立的 Keras 模型model,使用 SavedModel 载入后将无法使用model()直接进行推断,而需要使用model.call()。
以下是一个简单的示例,将 前文 MNIST 手写体识别的模型 进行导出和导入。
导出模型到 saved/1 文件夹:
import tensorflow as tf
from zh.model.utils import MNISTLoader
num_epochs = 1
batch_size = 50
learning_rate = 0.001
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(100, activation=tf.nn.relu),
tf

这篇教程详细介绍了TensorFlow模型的导出,包括SavedModel格式的完整导出以及Keras的H5模型导出。SavedModel包含模型的权重和计算图,便于部署和分享。Keras模型可以方便地导出为SavedModel,但某些情况需要使用tf.function转换。同时,文章提到了Keras的H5模型导出,适用于服务器和移动端的不同部署需求。

6773

被折叠的 条评论
为什么被折叠?



