模型持久化原理,对 4 个文件进行详细的介绍

在上一节中,我们保存了一个向量相加的模型并得到了总共 4 个文件,然而并没有对这 4 个文件进行详细的介绍。接下来阐述模型持久化原理的同时也会对这些文件的具体内容加以介绍,理解文件的内容有助于我们理解模型持久化的原理。除了 checkpoint 文件之外,剩余的 3 个文件都是模型保存的核心文件(二进制文件形式〉。对于这些二进制文件,我们无法直接打开。此时可以通过一些 函数将这些二进制文件转换为我们容易打开的文件形式,进而揭开这些文件的真正面貌。model.ckpt.mate 文件中存储的是 TensorFlow 程序的元图数据。所谓元图数据,指的是计算图中的节点信息 。元图数据的存储格式定义在MateGraphDef 中。以下就是 MetaGraphDef 的定义:

在这里插入图片描述
下代码展示了如何使用这个函数:

在这里插入图片描述
通过上面的代码,可以将上一节中的计算图的元图以 .j son 的格式导出并存储在 model.ckpt.meta.json 文件中。打开model.ckpt.meta.json 文件,会发现其中包含了很多嵌套的属性及属性值。在最外层,是 MateGraphDef中定义的 5 个属性:meta_info_def、 graph_def、 saver_def、 coHeetion_def 和

signature_defo 接下来会依次介绍这些属性。

meta info def 属性

meta info def 属性是通过MetalnfoDef 类型定义的。在定义中, meta_graph_ version 属性用于记录记录了 TensorFlow 计算图的版本号:any_info属性用于记录其他的一些附加信息:tags 属性用于记录用户指定的某些标签。这些都不是重要的属性 ,所以如果没有在saver 中特殊指定,这些属性

都默认为空。以下是 MetalnfoDef 的定义:
在这里插入图片描述

graph_def 属性

TensorFlow 计算图中的每一个节点都会对应到一个运算。在可视化的计算图中有时会看不到全部的运算,这是因为计算图对它们进行了“折叠”。在meat_info_def 属性中, striped_op_list 属性的 op 子属性记录了计算图中用到的全部的运算,但我们还需要一些属性来记录计算图中某一节点的信息,比如该节点采用了什么运算,输入、输出来自哪里等。这些节点的信息被存储在graph_def属性。graph_def 属性是通过 GraphDefProtocolBuffer 定义的。以下代码给出了 GraphDef类型的定义:
在这里插入图片描述

saver def 属性

saver def 属性是通过SaveDef 类型定义的,记录了持久化模型时 需要的一些参数,比如保存到文件的文件名、保存操作和加载操作的名称以及保存频率、清理历史记录等 。

SaveDef 类型定义如下:

在这里插入图片描述
collection def 属性

TensorFlow 的计算图(tf.Graph )通过维护不同集合的方式来管理不同类别的资源。关于这些集合的相关内容,在第 3 章中介绍计算图的时候己 经 有所涉及,某些集合在之前的章节中也有所使用,比如从tf.GraphKeys.TRAINABLE_VARIABLES集合中获取所有可以被训练的变量,以及使用 add_to_collection()函数将变量加入到一个集合中等。虽然 collection def 属性不直接参与这些集合的维护,但是在底层,collection_def属性却提供了对这些集合进行维护的依据 。collection_def 属性的内容是一个从集合名称到集合内容的映射,其中集合的名称(key值)为字符串,而集合内容( value 值)则通过CollectionDefProtocolBuffer 定义。以下代码给出了 CollectionDef 类型的定义:
在这里插入图片描述

总结:本小节主要讲述了模型持久化原理所涉及的一个文件—model.ckpt.mate 文件。持久化TensorFlow 中变量的取值同持久化 TensorFlow 计算图的结构一样是模型持久化时非常重要的一个部分。读取持久化之后变量的取值需要用到产生的data 文件和 . index 文件。

关注小鲸融创,一起深度学习金融科技!

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值