对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中用函数作为返回值和实现闭包的教程
Apr 27 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
Python实现图片转字符画的示例代码
Aug 21 Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
python学生信息管理系统
Mar 13 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
Mar 02 Python
Python图像处理之图像拼接
Apr 28 Python
python 网络编程要点总结
Jun 18 Python
分析Python list操作为什么会错误
Nov 17 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,ajax实现分页
2008/03/27 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
基于jQuery的日期选择控件
2009/10/27 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
Python不规范的日期字符串处理类
2014/06/10 Python
Python自动重试HTTP连接装饰器
2015/04/28 Python
详解Python编程中基本的数学计算使用
2016/02/04 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
Python 变量类型详解
2018/10/10 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
python合并多个excel文件的示例
2020/09/23 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
电子技术专业中专生的自我评价
2013/12/17 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
就业协议书范本
2014/04/11 职场文书
公司岗位说明书
2015/10/08 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang
React Fragment介绍与使用详解
2021/11/11 Javascript
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL