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获取服务器信息的最简单实现方法
Mar 05 Python
Python Sql数据库增删改查操作简单封装
Apr 18 Python
python实现超市扫码仪计费
May 30 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
python 数据提取及拆分的实现代码
Aug 26 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
TensorFlow实现自定义Op方式
Feb 04 Python
python不到50行代码完成了多张excel合并的实现示例
May 28 Python
基于Python pyecharts实现多种图例代码解析
Aug 10 Python
python opencv实现简易画图板
Aug 27 Python
Python中非常使用的6种基本变量的操作与技巧
Mar 22 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
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
vue实现分页组件
2020/06/16 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
python求素数示例分享
2014/02/16 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
解决pandas .to_excel不覆盖已有sheet的问题
2018/12/10 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
django 多数据库及分库实现方式
2020/04/01 Python
J2EE是技术还是平台还是框架
2016/08/14 面试题
管理科学大学生求职信
2013/11/13 职场文书
商务主管岗位职责
2013/12/08 职场文书
初中音乐教学反思
2014/01/12 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
python图片灰度化处理的几种方法
2021/06/23 Python
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技