对TensorFlow中的variables_to_restore函数详解


Posted in Python onJuly 30, 2018

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

1、滑动平均值模型文件的保存

import tensorflow as tf
 
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.initialize_all_variables()
 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、滑动平均值模型文件的读取

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

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

3、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

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

以上这篇对TensorFlow中的variables_to_restore函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
Python输出汉字字库及将文字转换为图片的方法
Jun 04 Python
Python语言实现将图片转化为html页面
Dec 06 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
Python中if elif else及缩进的使用简述
May 31 Python
PyQt5+requests实现车票查询工具
Jan 21 Python
Python Numpy 实现交换两行和两列的方法
Jun 26 Python
django框架用户权限中的session缓存到redis中的方法
Aug 06 Python
python super的使用方法及实例详解
Sep 25 Python
基于Python绘制个人足迹地图
Jun 01 Python
python实现人性化显示金额数字实例详解
Sep 25 Python
如何基于matlab相机标定导出xml文件
Nov 02 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 #Python
tensorflow 打印内存中的变量方法
Jul 30 #Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 #Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 #Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 #Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 #Python
对TensorFlow的assign赋值用法详解
Jul 30 #Python
You might like
Php Cookie的一个使用注意点
2008/11/08 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
php中Ctype函数用法详解
2014/12/09 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
Python标准库之sqlite3使用实例
2014/11/25 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
韩国11街:11STREET
2018/03/27 全球购物
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
四风问题自查报告剖析材料
2014/02/08 职场文书
六个一活动实施方案
2014/03/21 职场文书
质量保证书范本
2014/04/29 职场文书
师德师风演讲稿
2014/05/05 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL