TensorFlow变量管理详解


Posted in Python onMarch 10, 2018

一、TensorFlow变量管理

1. TensorFLow还提供了tf.get_variable函数来创建或者获取变量,tf.variable用于创建变量时,其功能和tf.Variable基本是等价的。tf.get_variable中的初始化方法(initializer)的参数和tf.Variable的初始化过程也类似,initializer函数和tf.Variable的初始化方法是一一对应的,详见下表。

TensorFlow变量管理详解

tf.get_variable和tf.Variable最大的区别就在于指定变量名称的参数。对于tf.Variable函数,变量名称是一个可选的参数,通过name=”v”的形式给出,对于tf.get_variable函数,变量名称是一个必填的参数,tf.get_variable会根据这个名称去创建或者获取变量。

2. 通过tf.variable_scope函数可以控制tf.get_variable函数的语义。当tf.variable_scope函数的参数reuse=True生成上下文管理器时,该上下文管理器内的所有的tf.get_variable函数会直接获取已经创建的变量,如果变量不存在则报错;当tf.variable_scope函数的参数reuse=False或者None时创建的上下文管理器中,tf.get_variable函数则直接创建新的变量,若同名的变量已经存在则报错。

3. 另tf.variable_scope函数是可以嵌套使用的。嵌套的时候,若某层上下文管理器未声明reuse参数,则该层上下文管理器的reuse参数与其外层保持一致。

4.tf.variable_scope函数提供了一个管理变量命名空间的方式。在tf.variable_scope中创建的变量,名称.name中名称前面会加入命名空间的名称,并通过“/”来分隔命名空间的名称和变量的名称。tf.get_variable("foou/baru/u", [1]),可以通过带命名空间名称的变量名来获取其命名空间下的变量。

二、TensorFlow编程演示

import tensorflow as tf 
 
# 在名字为foo的命名空间内创建名字为v的变量 
with tf.variable_scope("foo"): 
  v = tf.get_variable("v", [1], initializer=tf.constant_initializer(1.0)) 
 
''''' 
# 因为命名空间foo内已经存在变量v,再次创建则报错 
with tf.variable_scope("foo"): 
  v = tf.get_variable("v", [1]) 
# ValueError: Variable foo/v already exists, disallowed. 
# Did you mean to set reuse=True in VarScope? 
''' 
# 将参数reuse参数设置为True,则tf.get_variable可直接获取已声明的变量 
with tf.variable_scope("foo", reuse=True): 
  v1 = tf.get_variable("v", [1]) 
  print(v == v1) # True 
 
''''' 
# 当reuse=True时,tf.get_variable只能获取指定命名空间内的已创建的变量 
with tf.variable_scope("bar", reuse=True): 
  v2 = tf.get_variable("v", [1]) 
# ValueError: Variable bar/v does not exist, or was not created with 
# tf.get_variable(). Did you mean to set reuse=None in VarScope? 
''' 
 
with tf.variable_scope("root"): 
  # 通过tf.get_variable_scope().reuse函数获取当前上下文管理器内的reuse参数取值 
  print(tf.get_variable_scope().reuse) # False 
 
  with tf.variable_scope("foo1", reuse=True): 
    print(tf.get_variable_scope().reuse) # True 
 
    with tf.variable_scope("bar1"): 
      # 嵌套在上下文管理器foo1内的bar1内未指定reuse参数,则保持与外层一致 
      print(tf.get_variable_scope().reuse) # True 
 
  print(tf.get_variable_scope().reuse) # False 
 
# tf.variable_scope函数提供了一个管理变量命名空间的方式 
u1 = tf.get_variable("u", [1]) 
print(u1.name) # u:0 
with tf.variable_scope("foou"): 
  u2 = tf.get_variable("u", [1]) 
  print(u2.name) # foou/u:0 
 
with tf.variable_scope("foou"): 
  with tf.variable_scope("baru"): 
    u3 = tf.get_variable("u", [1]) 
    print(u3.name) # foou/baru/u:0 
 
  u4 = tf.get_variable("u1", [1]) 
  print(u4.name) # foou/u1:0 
 
# 可直接通过带命名空间名称的变量名来获取其命名空间下的变量 
with tf.variable_scope("", reuse=True): 
  u5 = tf.get_variable("foou/baru/u", [1]) 
  print(u5.name) # foou/baru/u:0 
  print(u5 == u3) # True 
  u6 = tf.get_variable("foou/u1", [1]) 
  print(u6.name) # foou/u1:0 
  print(u6 == u4) # True

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
关于python pyqt5安装失败问题的解决方法
Aug 08 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
Python返回数组/List长度的实例
Jun 23 Python
python 常见字符串与函数的用法详解
Nov 23 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
TensorFlow 读取CSV数据的实例
Feb 05 Python
python实现银行实战系统
Feb 26 Python
使用Python将图片转正方形的两种方法实例代码详解
Apr 29 Python
python使用Word2Vec进行情感分析解析
Jul 31 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 Python
python本地文件服务器实例教程
May 02 Python
python cv2图像质量压缩的算法示例
Jun 04 Python
TensorFlow神经网络优化策略学习
Mar 09 #Python
TensorFlow实现AutoEncoder自编码器
Mar 09 #Python
TensorFlow实现MLP多层感知机模型
Mar 09 #Python
TensorFlow实现Softmax回归模型
Mar 09 #Python
用python实现百度翻译的示例代码
Mar 09 #Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 #Python
TensorFlow实现卷积神经网络CNN
Mar 09 #Python
You might like
php图片上传存储源码并且可以预览
2011/08/26 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
教你php如何实现验证码
2016/01/20 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
Laravel 队列使用的实现
2019/01/08 PHP
PHP钩子实现方法解析
2019/05/21 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
python中random模块详解
2021/03/01 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
社团文化节邀请函
2014/01/10 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
幼儿园招生广告
2014/03/19 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
考试作弊检讨书
2014/10/21 职场文书
永不妥协观后感
2015/06/10 职场文书
Python加密与解密模块hashlib与hmac
2022/06/05 Python