Saver类位于tf.train中,属于训练过程中要用到的方法,主要作用就是保存和加载save & restore ckpt。
  最简单的保存应用举例:

saver.save(sess, 'my-model', global_step=0) ==> filename: 'my-model-0'
...
saver.save(sess, 'my-model', global_step=1000) ==> filename: 'my-model-1000'

  正常训练的过程应用:

# Create a saver.
saver = tf.train.Saver(...variables...)
# Launch the graph and train, saving the model every 1,000 steps.
sess = tf.Session()
for step in xrange(1000000):sess.run(..training_op..)if step % 1000 == 0:# Append the step number to the checkpoint name:saver.save(sess, 'my-model', global_step=step)

一、Saver构造函数__init__

  众多参数可传入,但用到的不多:

__init__(var_list=None,# 若为dict of variables,key将会做为save和restore的名字;若为list of variables,key将会采用op的名称。reshape=False,# 若True,允许在restore过程中将不同shape的变量进行reshape(必须同大小同种类)sharded=False,# 每一个设备都共享此ckptmax_to_keep=5,# 空间受限,仅存储最近5个模型keep_checkpoint_every_n_hours=10000.0,# 每隔n小时进行一次保存name=None,restore_sequentially=False,saver_def=None,builder=None,defer_build=False,allow_empty=False,write_version=tf.train.SaverDef.V2,pad_step_number=False,save_relative_paths=False,filename=None
)

二、Properties

  Saver的Properties仅有一个:last_checkpoints,返回目前还未删除的ckpt的文件列表,按照从旧到新的顺序。

三、Methods

1.save()

  保存变量,此函数需要一个session,其中含有launched graph,所有变量应已经被初始化。

save(sess,# 用于保存变量的会话,其中的variables应都已经initsave_path,# 字符串,前缀:“my-model”,最终成为my-model<-global_step>.data-00000-of-00001global_step=None,# 训练轮数=全局步数:1000  ==>  my-model-1000latest_filename=None,meta_graph_suffix='meta',# MetaGraphDef文件的后缀,默认meta,占用几个M的文件write_meta_graph=True,# Bool,指定是否需要保存一个meta图,默认保存write_state=True,strip_default_attrs=False,save_debug_info=False
)

  保存后目录下会有几个文件:

  • checkpoint :训练过程中自动生成的文本文件,里面记录了保存的最新的checkpoint文件以及其它checkpoint文件列表。在inference时,可以通过修改这个文件,指定使用哪个model。
  • MyModel.meta:包含全部graph信息。这是一个序列化的MetaGraphDef protocol buffer,包含数据流、变量的annotations、input pipelines,以及其他相关信息。
  • MyModel.data-00000-of-00001:包含所有变量的值(weights, biases, placeholders, gradients, hyper-parameters etc),也就是模型训练好参数和其他值
  • MyModel.index:?
      其中meta信息含有graph信息,因此在重新导入图是不需要手工从头开始构建图,而是直接导入meta信息。具体做法如下:
saver = tf.compat.v1.train.Saver(...variables...) # Create a saver.
tf.compat.v1.add_to_collection('train_op', train_op) # Remember the training_op we want to run by adding it to a collection.
sess = tf.Session()    # 创建一个Session
for step in xrange(1000000):sess.run(train_op)if step % 1000 == 0:saver.save(sess, 'my-model', global_step=step) # 同时保存了meta文件
# ########################################################################
with tf.Session() as sess:# 加载图信息,在默认session中创建图。返回的是一个Savernew_saver = tf.train.import_meta_graph('my-save-dir/my-model-10000.meta') new_saver.restore(sess, 'my-save-dir/my-model-10000') # 加载数据信息train_op = tf.get_collection('train_op')[0] # 会返回一个列表,因此需要取出0元素for step in xrange(1000000):sess.run(train_op)

更多使用方法:[

Tensorflow笔记4:Saver相关推荐

  1. 人工智能实践:TensorFlow笔记学习(六)—— 全连接网络实践

    输入手写数字输出识别结果 大纲 6.1 输入手写数字图片输出识别结果 6.2 制作数据集 目标 1.实现断点续训 2.输入真实图片,输出预测结果 3.制作数据集,实现特定应用 6.1  输入手写数字图 ...

  2. 人工智能实践:TensorFlow笔记学习(五)—— 全连接网络基础

    MNIST数据集输出手写数字识别准确率 大纲 5.1 MNIST数据集 5.2 模块化搭建神经网络 5.3 手写数字识别准确率输出 目标 利用MNIST数据集巩固模块化搭建神经网路的八股,实践前向传播 ...

  3. tensorflow笔记:模型的保存与训练过程可视化

    tensorflow笔记系列:  (一) tensorflow笔记:流程,概念和简单代码注释  (二) tensorflow笔记:多层CNN代码分析  (三) tensorflow笔记:多层LSTM代 ...

  4. TensorFlow 笔记6--迁移学习

    TensorFlow 笔记6–迁移学习 参考文档:https://github.com/ageron/handson-ml/blob/master/11_deep_learning.ipynb 一.冻 ...

  5. TensorFlow 笔记5--模型复用

    TensorFlow 笔记5–模型复用 参考文档:https://github.com/ageron/handson-ml/blob/master/11_deep_learning.ipynb 一.模 ...

  6. TensorFlow笔记(10) CheckPoint

    TensorFlow笔记(10) CheckPoint 1. checkpoint 2. 保存检查点 3. 读取检查点 1. checkpoint 随着数据的复杂性和网络深度的加深,训练的强度就会加大 ...

  7. 中国大学MOOC-人工智能实践:Tensorflow笔记-课程笔记 Chapter6

    本篇博客为学习中国大学MOOC-人工智能实践:Tensorflow笔记课程时的个人笔记记录.具体课程情况可以点击链接查看.(这里推一波中国大学MOOC,很好的学习平台,质量高,种类全,想要学习的话很有 ...

  8. Tensorflow笔记__使用mnist数据集并测试自己的手写图片

    内容源于曹建老师的tensorflow笔记课程 源码链接:https://github.com/cj0012/AI-Practice-Tensorflow-Notes 测试图片下载:https://g ...

  9. tensorflow笔记:多层CNN代码分析

    tensorflow笔记系列:  (一) tensorflow笔记:流程,概念和简单代码注释  (二) tensorflow笔记:多层CNN代码分析  (三) tensorflow笔记:多层LSTM代 ...

  10. tensorflow笔记:流程,概念和简单代码注释

    tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果.这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一 ...

最新文章

  1. opencv去除图片的高光
  2. NSDictionary所有API的学习。
  3. 部署支持php和Redis的Nginx服务器
  4. 哑编码官方代码自己的注解
  5. 页面滚动到某一位置吸顶_vue监听滚动事件某元素吸顶或固定位置显示详解
  6. maven入门(7)maven项目(组件)的坐标
  7. 加拿大程序员趣闻系列 1/N
  8. oracle8 as sysdba,Oracle 8i 密码验证
  9. Ubuntu彻底卸载MySQL
  10. Context.getDir
  11. java 字符串占位符动态替换值工具类
  12. Ubuntu 18.04 ——— ROVIO运行与EVO的评测与使用
  13. ubuntu桌面图标不显示问题
  14. 【无标题】打印水仙花(pyth)
  15. 离心泵水力设计——叶轮设计——2 前后盖板型线
  16. Optimizing radiotherapy plans for cancer treatment with Tensor Networks解读
  17. androidx使用Toolbar
  18. APP下载二维码微信扫一扫无法打开解决方案
  19. 【毕业设计】基于STM32的智能台灯设计 物联网 电子信息 APP远程控制
  20. 使用 ssh 连接安装 Anaconda

热门文章

  1. 7z怎么解压linux,7z 常用解压命令
  2. Vulkan 基本原理
  3. SAM简单介绍(百度翻译)
  4. 应用尝试更改计算机,win10无法使用内置管理员帐户打开应用解决方法
  5. 弗吉尼亚大学计算机就业如何,假设你是新华中学的学生李华,高中毕业后想到美国弗吉尼亚大学(University of Virginia)计算机专业深造...
  6. migration java_如何重置migration
  7. 什么是数据科学家与数据科学
  8. 无法打开文件“d3dx9.lib_三个小技巧,教会你解决无法打开手机文件问题
  9. Android 获取系统语言,区分简繁体中文
  10. 6月书讯 | 初夏,正好读新书