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))

isTrain:用来区分训练阶段和测试阶段,True表示训练,False表示测试

train_steps:表示训练的次数,例子中使用100

checkpoint_steps:表示训练多少次保存一下checkpoints,例子中使用50

checkpoint_dir:表示checkpoints文件的保存路径,例子中使用当前路径

2.1 训练阶段

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

sess:表示当前会话,当前会话记录了当前的变量值

checkpoint_dir + 'model.ckpt':表示存储的文件名

global_step:表示当前是第几步

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

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

2.1测试阶段

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

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

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

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

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

python中save 函数_Tensorflow之Saver的用法详解相关推荐

  1. Python中第三方库Requests库的高级用法详解

    Python中第三方库Requests库的高级用法详解 虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好.它已经不适合现在的时代, ...

  2. mysql中find_in_set()函数的使用及in()用法详解

    From: http://www.manongjc.com/article/2710.html MySQL手册中find_in_set函数的语法解释: FIND_IN_SET(str,strlist) ...

  3. mysql的find in set_mysql中find_in_set()函数的使用及in()用法详解

    MySQL手册中find_in_set函数的语法解释: FIND_IN_SET(str,strlist) str 要查询的字符串 strlist 字段名 参数以","分隔 如 (1 ...

  4. Find_in_set()函数的使用及in()用法详解

    这篇文章主要介绍了mysql中find_in_set()函数的使用以及in()用法详解,需要的朋可以参考下 MySQL手册中find_in_set函数的语法解释: FIND_IN_SET(str,st ...

  5. python数组相减_对Python 中矩阵或者数组相减的法则详解

    对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...

  6. 站长在线Python精讲:在Python中使用正则表达式的sub()方法替换字符串详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中使用正则表达式的sub()方法替换字符串详解>. 在Python中使用正则表达式的sub()方法替换字符串. ...

  7. Python函数(函数定义、函数调用)用法详解

    函数 函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码. 函数可以提前保存起来,并给它起一个独一无二的名字,只要知道它的名字就能使用这段代码.函数还可以接 ...

  8. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  9. python os模块安装方法_基于python中pygame模块的Linux下安装过程(详解)

    一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...

最新文章

  1. c#启动mysql数据库服务器_C#启动停止SQL数据库服务
  2. Mac-使用技巧之快捷键
  3. 组件间数据交互——组件插槽的作用||具名插槽用法|| 作用域插槽
  4. 系统安全及应用(账户安全控制,系统引导和登录,弱口令检测和登录控制,PAM认证,端口扫描,用户切换和提权)
  5. delphi的接口support_学习到的关于Delphi的接口
  6. virtualbox安装android6.0并设置分辨率为1920x1080x32
  7. 轨道坐标系_天文坐标系分类
  8. 跨境电商shopify独立站如何引流量
  9. 关于ccflow工作流引擎报表查询权限升级的更新
  10. 大学英语综合教程一 Unit 3 课文内容英译中 中英翻译
  11. 使用回溯算法解决排列组合问题
  12. 大数据的核心价值是什么
  13. 你的优秀与我无关 活的自由胜过成功------彭怡平(转载)
  14. 信息系统项目管理师---第十五、十六章 知识管理及项目变更管理历年考题
  15. 千古奇才---埃舍尔
  16. 终于,“亚麻百货”也要来了!
  17. 如何给单片机烧录程序?
  18. 华为2288H V5服务器RAID配置
  19. 发现一款不错的快速开发平台
  20. 重庆大学计算机学院 寝室,2020年重庆大学新生宿舍环境条件,大一新生男生女生宿舍内部图片【多图】...

热门文章

  1. 使用计算机食谱编制,1食谱编制—营养成分计算法.ppt
  2. 最小阻力之路,系统问题分析与解决八步法
  3. 牛皮凉席和牛皮枕套的差异!
  4. 使用python模拟光的双缝干涉
  5. Qtcreator 界面启动不了报错:Could not initialize GLX
  6. excel首行固定_EXCEL 一个工作表如何快速拆分多个工作表的方法
  7. 模拟电影院的买票过程演示线程安全问题
  8. 百趣代谢组学解读,深度解码蜜蜂肠菌调节宿主行为和神经功能
  9. 十一、填充和步幅、多通道输入输出、池化层作用(3.7学习笔记2)
  10. python的分隔符_python基础一 ------字符串的多种分隔符分隔