Tensorflow之Saver的用法详解


Posted in Python onApril 23, 2018

Saver的用法

1. Saver的背景介绍

我们经常在训练完一个模型之后希望保存训练的结果,这些结果指的是模型的参数,以便下次迭代的训练或者用作测试。Tensorflow针对这一需求提供了Saver类。

Saver类提供了向checkpoints文件保存和从checkpoints文件中恢复变量的相关方法。Checkpoints文件是一个二进制文件,它把变量名映射到对应的tensor值 。

只要提供一个计数器,当计数器触发时,Saver类可以自动的生成checkpoint文件。这让我们可以在训练过程中保存多个中间结果。例如,我们可以保存每一步训练的结果。

为了避免填满整个磁盘,Saver可以自动的管理Checkpoints文件。例如,我们可以指定保存最近的N个Checkpoints文件。

2. Saver的实例

下面以一个例子来讲述如何使用Saver类 

import tensorflow as tf 
import numpy as np  
x = tf.placeholder(tf.float32, shape=[None, 1]) 
y = 4 * x + 4  
w = tf.Variable(tf.random_normal([1], -1, 1)) 
b = tf.Variable(tf.zeros([1])) 
y_predict = w * x + b 
loss = tf.reduce_mean(tf.square(y - y_predict)) 
optimizer = tf.train.GradientDescentOptimizer(0.5) 
train = optimizer.minimize(loss)  
isTrain = False 
train_steps = 100 
checkpoint_steps = 50 
checkpoint_dir = ''  
saver = tf.train.Saver() # defaults to saving all variables - in this case w and b 
x_data = np.reshape(np.random.rand(10).astype(np.float32), (10, 1))  
with tf.Session() as sess: 
  sess.run(tf.initialize_all_variables()) 
  if isTrain: 
    for i in xrange(train_steps): 
      sess.run(train, feed_dict={x: x_data}) 
      if (i + 1) % checkpoint_steps == 0: 
        saver.save(sess, checkpoint_dir + 'model.ckpt', global_step=i+1) 
  else: 
    ckpt = tf.train.get_checkpoint_state(checkpoint_dir) 
    if ckpt and ckpt.model_checkpoint_path: 
      saver.restore(sess, ckpt.model_checkpoint_path) 
    else: 
      pass 
    print(sess.run(w)) 
    print(sess.run(b))
  1. isTrain:用来区分训练阶段和测试阶段,True表示训练,False表示测试
  2. train_steps:表示训练的次数,例子中使用100
  3. checkpoint_steps:表示训练多少次保存一下checkpoints,例子中使用50
  4. checkpoint_dir:表示checkpoints文件的保存路径,例子中使用当前路径

2.1 训练阶段

使用Saver.save()方法保存模型:

  1. sess:表示当前会话,当前会话记录了当前的变量值
  2. checkpoint_dir + 'model.ckpt':表示存储的文件名
  3. global_step:表示当前是第几步

训练完成后,当前目录底下会多出5个文件。

Tensorflow之Saver的用法详解

打开名为“checkpoint”的文件,可以看到保存记录,和最新的模型存储位置。

Tensorflow之Saver的用法详解

2.1测试阶段

测试阶段使用saver.restore()方法恢复变量:

sess:表示当前会话,之前保存的结果将被加载入这个会话

ckpt.model_checkpoint_path:表示模型存储的位置,不需要提供模型的名字,它会去查看checkpoint文件,看看最新的是谁,叫做什么。

运行结果如下图所示,加载了之前训练的参数w和b的结果

Tensorflow之Saver的用法详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现把xml或xsl转换为html格式
Apr 08 Python
Python的GUI框架PySide的安装配置教程
Feb 16 Python
Python使用smtplib模块发送电子邮件的流程详解
Jun 27 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
python使用rsa非对称加密过程解析
Dec 28 Python
python numpy数组复制使用实例解析
Jan 10 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 Python
python playwright 自动等待和断言详解
Nov 27 Python
python获取文件路径、文件名、后缀名的实例
Apr 23 #Python
Python基于FTP模块实现ftp文件上传操作示例
Apr 23 #Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 #Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 #Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 #Python
python遍历一个目录,输出所有的文件名的实例
Apr 23 #Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 #Python
You might like
PHP 数组基础知识小结
2010/08/20 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
接收键盘指令的脚本
2006/06/26 Javascript
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
Python验证码识别的方法
2015/07/10 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
请介绍一下Ant
2016/07/22 面试题
计算机专业个人求职信范例
2013/09/23 职场文书
集体婚礼证婚词
2014/01/13 职场文书
个人租房协议书样本
2014/10/01 职场文书
财务会计岗位职责
2015/02/03 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
Python语言中的数据类型-序列
2022/02/24 Python
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android