对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中用于转换字母为小写的lower()方法使用简介
May 19 Python
深入理解python函数递归和生成器
Jun 06 Python
详解Swift中属性的声明与作用
Jun 30 Python
Python实现的密码强度检测器示例
Aug 23 Python
tensorflow实现加载mnist数据集
Sep 08 Python
python获取url的返回信息方法
Dec 17 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
python输出数学符号实例
May 11 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
python list等分并从等分的子集中随机选取一个数
Nov 16 Python
Django集成MongoDB实现过程解析
Dec 01 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数组一对一替换实现代码
2012/08/31 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
详解Python中的变量及其命名和打印
2016/03/11 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
Python可以实现栈的结构吗
2020/05/27 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
高中毕业自我鉴定
2013/12/16 职场文书
公司财务自我评价分享
2013/12/17 职场文书
庆七一活动方案
2014/01/25 职场文书
数控专业个人求职信范文
2014/02/05 职场文书
后备干部考察材料
2014/02/12 职场文书
三年级学生评语
2014/04/23 职场文书
贷款收入证明格式
2015/06/24 职场文书
Python pyecharts绘制条形图详解
2022/04/02 Python
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server