对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编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
在Python中用has_key()方法查找键是否存在的教程
May 21 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
Jan 20 Python
Python正则简单实例分析
Mar 21 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 Python
解决python明明pip安装成功却找不到包的问题
Aug 28 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
python使用隐式循环快速求和的实现示例
Sep 11 Python
Python xlrd/xlwt 创建excel文件及常用操作
Sep 24 Python
python 破解加密zip文件的密码
Apr 22 Python
python如何查找列表中元素的位置
May 30 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
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
php 7新特性之类型申明详解
2017/06/06 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
python dict.get()和dict['key']的区别详解
2016/06/30 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
Flask框架web开发之零基础入门
2018/12/10 Python
python顺序执行多个py文件的方法
2019/06/29 Python
python实现简单成绩录入系统
2019/09/19 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
会计出纳员的自我评价
2014/01/15 职场文书
中学生自我评价范文
2014/02/08 职场文书
中专毕业生个人职业生涯规划
2014/02/19 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
python百行代码实现汉服圈图片爬取
2021/11/23 Python
css3 文字断裂效果
2022/04/22 HTML / CSS