对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程序设计入门(1)基本语法简介
Jun 13 Python
跟老齐学Python之玩转字符串(3)
Sep 14 Python
Python进行数据科学工作的简单入门教程
Apr 01 Python
使用python判断你是青少年还是老年人
Nov 29 Python
python远程调用rpc模块xmlrpclib的方法
Jan 11 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
TensorFlow 显存使用机制详解
Feb 03 Python
python 实现分组求和与分组累加求和代码
May 18 Python
python的pip有什么用
Jun 17 Python
Django debug为True时,css加载失败的解决方案
Apr 24 Python
python机器学习实现oneR算法(以鸢尾data为例)
Mar 03 Python
Django框架中表单的用法
Jun 10 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
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
vue中template的三种写法示例
2020/10/21 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
python求解水仙花数的方法
2015/05/11 Python
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
Python坐标线性插值应用实现
2019/11/13 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
jQuery treeview树形结构应用
2021/03/24 jQuery
大学生自助营养快餐店创业计划书
2014/01/13 职场文书
迟到检讨书500字
2014/02/05 职场文书
保险专业自荐信范文
2014/02/20 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
质量整改通知单
2015/04/21 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL