variables_to_restore函数,是TensorFlow为滑动平均值提供。之前,也介绍过通过使用滑动平均值可以让神经网络模型更加的健壮。我们也知道,其实在TensorFlow中,变量的滑动平均值都是由影子变量所维护的,如果你想要获取变量的滑动平均值需要获取的是影子变量而不是变量本身。
1/滑动平均值模型文件的保存

if __name__ == "__main__":v = tf.Variable(0.,name="v")#设置滑动平均模型的系数ema = tf.train.ExponentialMovingAverage(0.99)#设置变量v使用滑动平均模型,tf.all_variables()设置所有变量op = ema.apply([v])#获取变量v的名字print(v.name)#v:0#创建一个保存模型的对象save = tf.train.Saver()sess = tf.Session()#初始化所有变量init = tf.global_variables_initializer()sess.run(init)#给变量v重新赋值sess.run(tf.assign(v,10))#应用平均滑动设置sess.run(op)#保存模型文件save.save(sess,"./model.ckpt")#输出变量v之前的值和使用滑动平均模型之后的值print(sess.run([v,ema.average(v)]))#[10.0, 0.099999905]

2、滑动平均值模型文件的读取

对于模型文件的读取,在上一篇博客中有介绍过,这里特别需要注意的一个地方就是,在使用tf.train.Saver函数中,所传递的模型参数是{"v/ExponentialMovingAverage":v}而不是{"v":v},如果你使用的是后面的参数,那么你得到的结果将是10而不是0.09,那是因为后者获取的是变量本身而不是影子变量。是不是感觉使用这种方式来读取模型文件的时候,还需要输入一大串的变量名称。

v = tf.Variable(1.,name="v")
#定义模型对象
saver = tf.train.Saver({"v":v})
sess = tf.Session()
saver.restore(sess,"./model.ckpt")
print(sess.run(v))
#0.0999999

3、variables_to_restore函数的使用

通过使用variables_to_restore函数,可以使在加载模型的时候将影子变量直接映射到变量的本身,所以我们在获取变量的滑动平均值的时候只需要获取到变量的本身值而不需要去获取影子变量。

v = tf.Variable(1.,name="v")
#滑动模型的参数的大小并不会影响v的值
ema = tf.train.ExponentialMovingAverage(0.99)
print(ema.variables_to_restore())
#{'v/ExponentialMovingAverage': <tf.Variable 'v:0' shape=() dtype=float32_ref>}
sess = tf.Session()
saver = tf.train.Saver(ema.variables_to_restore())
saver.restore(sess,"./model.ckpt")
print(sess.run(v))
#0.0999999

转子下面:

https://blog.csdn.net/sinat_29957455/article/details/78508793

tensorflow之variables_to_restore相关推荐

  1. tensorflow tf.train.ExponentialMovingAverage().variables_to_restore()函数 (用于加载模型时将影子变量直接映射到变量本身)

    variables_to_restore函数,是TensorFlow为滑动平均值提供.之前,也介绍过通过使用滑动平均值可以让神经网络模型更加的健壮.我们也知道,其实在TensorFlow中,变量的滑动 ...

  2. TensorFlow MNIST最佳实践

    之前通过CNN进行的MNIST训练识别成功率已经很高了,不过每次运行都需要消耗很多的时间.在实际使用的时候,每次都要选经过训练后在进行识别那就太不方便了. 所以我们学习一下如何将训练习得的参数保存起来 ...

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

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

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

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

  5. TensorFlow学习笔记-实现经典LeNet5模型(转载)

    LeNet5模型是Yann LeCun教授于1998年提出来的,它是第一个成功应用于数字识别问题的卷积神经网络.在MNIST数据中,它的准确率达到大约99.2%. 通过TensorFlow实现的LeN ...

  6. Tensorflow yolov3 Intel Realsense D435 双摄像头下测试python多线程(假的多线程)self.predict()函数运行时间(191204)

    测试代码: # -*- coding: utf-8 -*- """ @File : test-191204-两个摄像头调用多线程识别.py @Time : 2019/12 ...

  7. Tensorflow yolov3 Intel Realsense D435 单摄像头下各模块识别时间测试

    文章目录 1.一次循环总耗时 2.从循环开始到self.predict()之前 3.第一次循环主要耗时函数:wait_for_frames()(其实self.predict()函数在第一次循环更耗时) ...

  8. 【TensorFlow】笔记4:图像识别与CNN

    文章目录 一.图像识别&经典数据集 1.Cifar数据集 2. ImageNet 二.CNN 三.卷积神经网络常用结构 1.卷积层 2.池化层 (2)实现 四.经典CNN模型 1.LeNet- ...

  9. 【TensorFlow】笔记3:MNIST数字识别问题

    文章目录 一.MNIST数据处理 1.数据集概述 2.数据获取 二.神经网络模型训练及不同模型结果对比 1.TF训练神经网络 2.使用验证数据判断模型效果 3.不同模型效果比较 三.变量管理 1.tf ...

最新文章

  1. SetAutoResizeMode
  2. 【自动驾驶】毫米波雷达相关知识专题
  3. 【模型解读】从2D卷积到3D卷积,都有什么不一样
  4. 计算机作文点评,未来的电脑作文评语
  5. fenby C语言 P30
  6. 计算机考试视频教程江西,江西计算机二级自学教程推荐:公共基础知识(2018年版)...
  7. windows apache部署php,Windows下部署Apache+PHP+MySQL运行环境实战
  8. python变量和常量_python变量与常量内容:
  9. jQuery常见的50种用法
  10. 单片微型计算机与接口技术第5版重点,韶关学院《单片微型计算机与接口技术》(第5版)思考题与习题解答.pdf...
  11. 如何用iMazing软件将手机备忘录导入至电脑
  12. 问题集录--新手入门深度学习,选择TensorFlow 好吗?
  13. Java进阶:SpringMVC中获取web.xml中的全局参数
  14. 面向对象14:变长数组Vector、static关键字
  15. python二手房课程设计_基于python爬取链家二手房信息代码示例
  16. android格式化通讯录
  17. 【操作系统】30天自制操作系统--(1)虚拟机加载最小操作系统
  18. Python算法--杂乱字符串排序
  19. 修改和重新封装了一个GHOST XP
  20. 3d量测怎么学距离_3D虚拟仿真技术提升物流设备应用能力

热门文章

  1. iscsi网络存储服务
  2. 开源大数据:Alluxio 云原生数据编排
  3. Serverless 开发者平台
  4. spark++读写mysql_spark读写mysql
  5. jsoup抓取html中的js,使用Jsoup,抓取整个网站(包括图片、js、css)
  6. java 数组协变_java 数组协变
  7. 1000以内的回文数_杭城有学校带学生玩扑克、数糖果... “云课堂”下的数学很有趣!这些数学游戏,居家玩起来~...
  8. Vue学习笔记之11-slot插槽
  9. 最小二乘法 c 语言程序,最小二乘法采用C语言.docx
  10. anaconda使用pythonnotebook_anaconda3 notebook for python数据分析-环境搭建