Saver的用法

1. Saver的背景介绍

    我们经常在训练完一个模型之后希望保存训练的结果,这些结果指的是模型的参数,以便下次迭代的训练或者用作测试。Tensorflow针对这一需求提供了Saver类。
  1. Saver类提供了向checkpoints文件保存和从checkpoints文件中恢复变量的相关方法。Checkpoints文件是一个二进制文件,它把变量名映射到对应的tensor值 。
  2. 只要提供一个计数器,当计数器触发时,Saver类可以自动的生成checkpoint文件。这让我们可以在训练过程中保存多个中间结果。例如,我们可以保存每一步训练的结果。
  3. 为了避免填满整个磁盘,Saver可以自动的管理Checkpoints文件。例如,我们可以指定保存最近的N个Checkpoints文件。

2. Saver的实例

下面以一个例子来讲述如何使用Saver类
import tensorflow as tf
import numpy as npx = tf.placeholder(tf.float32, shape=[None, 1])
y = 4 * x + 4w = tf.Variable(tf.random_normal([1], -1, 1))
b = tf.Variable(tf.zeros([1]))
y_predict = w * x + bloss = 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:passprint(sess.run(w))print(sess.run(b))

isTrain:用来区分训练阶段和测试阶段,True表示训练,False表示测试
train_steps:表示训练的次数,例子中使用100
checkpoint_steps:表示训练多少次保存一下checkpoints,例子中使用50
checkpoint_dir:表示checkpoints文件的保存路径,例子中使用当前路径

2.1 训练阶段

使用Saver.save()方法保存模型:
  1. sess:表示当前会话,当前会话记录了当前的变量值
  2. checkpoint_dir + 'model.ckpt':表示存储的文件名
  3. global_step:表示当前是第几步

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

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

2.1测试阶段

    测试阶段使用saver.restore()方法恢复变量:
  1. sess:表示当前会话,之前保存的结果将被加载入这个会话
  2. ckpt.model_checkpoint_path:表示模型存储的位置,不需要提供模型的名字,它会去查看checkpoint文件,看看最新的是谁,叫做什么。

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

Tensorflow系列——Saver的用法相关推荐

  1. python中save 函数_Tensorflow之Saver的用法详解

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

  2. TensorFlow优化器及用法

    TensorFlow优化器及用法 函数在一阶导数为零的地方达到其最大值和最小值.梯度下降算法基于相同的原理,即调整系数(权重和偏置)使损失函数的梯度下降. 在回归中,使用梯度下降来优化损失函数并获得系 ...

  3. tensorflow中Tensorboard的用法

    tensorflow中Tensorboard的用法 下面代码定义了一个简单的用于实现常量加法和乘法的计算图. import tensorflow as tf input1 = tf.constant( ...

  4. python items函数用法,Python中dictionary items()系列函数的用法实例

    本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值.具体分析如下: 先来看一个示例: import html # availab ...

  5. 【TensorFlow系列一】TensorFlow工作原理

    ↑ 点击上方[计算机视觉联盟]关注我们 今天开始,小编会更新TensorFlow系列文章,包括TensorFlow的使用和TensorFlow实践的项目等. 本篇主要介绍TensorFlow的计算模型 ...

  6. Tensorflow学习笔记——Summary用法

    最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法. 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模 ...

  7. TensorFlow 系列案例(3): 使用TensorFlow DNN分类器对数据进行分类

    TensorFlow 卷积神经网络系列案例(1):猫狗识别 https://blog.csdn.net/duan_zhihua/article/details/81156693 TensorFlow ...

  8. python中item是什么意思中文-Python中items()系列函数的用法详解

    这篇文章主要介绍了Python中dictionary items()系列函数的用法,很实用的函数,需要的朋友可以参考下 本文实例讲述了Python中dictionary items()系列函数的用法, ...

  9. Java工具类系列--Objects的用法

    原文网址:Java工具类系列--Objects的用法_IT利刃出鞘的博客-CSDN博客 简介 本文用示例介绍Java中的Objects的用法. Java中的Objects是操作对象的工具类,有如下功能 ...

  10. Java工具类系列--Arrays的用法

    原文网址:Java工具类系列--Arrays的用法_IT利刃出鞘的博客-CSDN博客 简介 本文用示例介绍Java中的Arrays的常用方法. Java中的Arrays是用来操作数组的工具类,支持如下 ...

最新文章

  1. nginx header参数丢失_Nginx 性能优化有这篇就够了!
  2. 照葫芦画瓢-comments(注释)
  3. DeepLearning tutorial(1)Softmax回归原理简介+代码详解
  4. pjsip视频通信开发(上层应用)之拨号界面整体界面功能实现
  5. java检测ubuntu_在Ubuntu、Debian、CentOS Linux中检查Java版本的方法
  6. 笔记-中项案例题-2020年下-立项管理
  7. 还在搜百度图片?太LOW了!
  8. linux-buff/cache过大导致内存不足-程序异常
  9. Istio从懵圈到熟练 – 二分之一活的微服务
  10. python 项目发布会_发布会直播技术及业务实践
  11. 生存分析——快手的基于深度学习框架的集成⽣存分析软件KwaiSurvival(一)
  12. 计算机网络物理层之数据通信的基础知识
  13. 微信小程序轮播图实现详解
  14. IDEA 2020 返回上一步快捷键
  15. 族蚂建站课堂:域名相关基础内容
  16. [转贴]杨式太极拳八十五式通释—3—王志远
  17. 小草与大树的一分钟演讲
  18. php电商开源框架,Sylius 开源PHP电商解决方案
  19. 《数据库系统概论》3.3.1模式的定义与删除实操
  20. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 63绝对有效

热门文章

  1. vue实现PC端和移动端的界面切换
  2. 牛客寒假基础集训营 | Day1 G题—eli和字符串
  3. 元宇宙区块链卡牌游戏Defina Finance上线|详解
  4. EKMA曲线及大气O3来源解析
  5. 变电站无线测温系统的特点与应用
  6. windows10无法使用内置管理员账户打开应用
  7. Modifier在java_Java-Modifier类常用方法详解
  8. 【技能图谱免费下载】进阶数据库工程师 你需要Get这些技能
  9. 知识管理选石墨、语雀 or Baklib
  10. 5G 38.300 Rel15 中文版