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学习笔记_数据排序方法
May 22 Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
python函数形参用法实例分析
Aug 04 Python
python中map()函数的使用方法示例
Sep 29 Python
[原创]Python入门教程4. 元组基本操作
Oct 31 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
python读写csv文件实例代码
Jul 05 Python
Python3视频转字符动画的实例代码
Aug 29 Python
Python pip配置国内源的方法
Feb 14 Python
Python实现屏幕录制功能的代码
Mar 02 Python
python设置表格边框的具体方法
Jul 17 Python
Python json解析库jsonpath原理及使用示例
Nov 25 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
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php 引用(&)详解
2009/11/20 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
Angularjs单选框相关的示例代码
2017/08/17 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
gearman的安装启动及python API使用实例
2014/07/08 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
利用python画出折线图
2018/07/26 Python
使用python3构建文件传输的方法
2019/02/13 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
办公室文秘自我鉴定
2013/09/21 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
事业单位鉴定材料
2014/05/25 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
辞职信标准格式
2015/02/27 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python