Tensorflow笔记4:Saver
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相关推荐
- 人工智能实践:TensorFlow笔记学习(六)—— 全连接网络实践
输入手写数字输出识别结果 大纲 6.1 输入手写数字图片输出识别结果 6.2 制作数据集 目标 1.实现断点续训 2.输入真实图片,输出预测结果 3.制作数据集,实现特定应用 6.1 输入手写数字图 ...
- 人工智能实践:TensorFlow笔记学习(五)—— 全连接网络基础
MNIST数据集输出手写数字识别准确率 大纲 5.1 MNIST数据集 5.2 模块化搭建神经网络 5.3 手写数字识别准确率输出 目标 利用MNIST数据集巩固模块化搭建神经网路的八股,实践前向传播 ...
- tensorflow笔记:模型的保存与训练过程可视化
tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorflow笔记:多层LSTM代 ...
- TensorFlow 笔记6--迁移学习
TensorFlow 笔记6–迁移学习 参考文档:https://github.com/ageron/handson-ml/blob/master/11_deep_learning.ipynb 一.冻 ...
- TensorFlow 笔记5--模型复用
TensorFlow 笔记5–模型复用 参考文档:https://github.com/ageron/handson-ml/blob/master/11_deep_learning.ipynb 一.模 ...
- TensorFlow笔记(10) CheckPoint
TensorFlow笔记(10) CheckPoint 1. checkpoint 2. 保存检查点 3. 读取检查点 1. checkpoint 随着数据的复杂性和网络深度的加深,训练的强度就会加大 ...
- 中国大学MOOC-人工智能实践:Tensorflow笔记-课程笔记 Chapter6
本篇博客为学习中国大学MOOC-人工智能实践:Tensorflow笔记课程时的个人笔记记录.具体课程情况可以点击链接查看.(这里推一波中国大学MOOC,很好的学习平台,质量高,种类全,想要学习的话很有 ...
- Tensorflow笔记__使用mnist数据集并测试自己的手写图片
内容源于曹建老师的tensorflow笔记课程 源码链接:https://github.com/cj0012/AI-Practice-Tensorflow-Notes 测试图片下载:https://g ...
- tensorflow笔记:多层CNN代码分析
tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorflow笔记:多层LSTM代 ...
- tensorflow笔记:流程,概念和简单代码注释
tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果.这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一 ...
最新文章
- opencv去除图片的高光
- NSDictionary所有API的学习。
- 部署支持php和Redis的Nginx服务器
- 哑编码官方代码自己的注解
- 页面滚动到某一位置吸顶_vue监听滚动事件某元素吸顶或固定位置显示详解
- maven入门(7)maven项目(组件)的坐标
- 加拿大程序员趣闻系列 1/N
- oracle8 as sysdba,Oracle 8i 密码验证
- Ubuntu彻底卸载MySQL
- Context.getDir
- java 字符串占位符动态替换值工具类
- Ubuntu 18.04 ——— ROVIO运行与EVO的评测与使用
- ubuntu桌面图标不显示问题
- 【无标题】打印水仙花(pyth)
- 离心泵水力设计——叶轮设计——2 前后盖板型线
- Optimizing radiotherapy plans for cancer treatment with Tensor Networks解读
- androidx使用Toolbar
- APP下载二维码微信扫一扫无法打开解决方案
- 【毕业设计】基于STM32的智能台灯设计 物联网 电子信息 APP远程控制
- 使用 ssh 连接安装 Anaconda
热门文章
- 7z怎么解压linux,7z 常用解压命令
- Vulkan 基本原理
- SAM简单介绍(百度翻译)
- 应用尝试更改计算机,win10无法使用内置管理员帐户打开应用解决方法
- 弗吉尼亚大学计算机就业如何,假设你是新华中学的学生李华,高中毕业后想到美国弗吉尼亚大学(University of Virginia)计算机专业深造...
- migration java_如何重置migration
- 什么是数据科学家与数据科学
- 无法打开文件“d3dx9.lib_三个小技巧,教会你解决无法打开手机文件问题
- Android 获取系统语言,区分简繁体中文
- 6月书讯 | 初夏,正好读新书