时间:2021-05-22
环境:Ubuntu14.04,tensorflow=1.4(bazel源码安装),Anaconda python=3.6
声明变量主要有两种方法:tf.Variable和tf.get_variable,二者的最大区别是:
(1) tf.Variable是一个类,自带很多属性函数;而 tf.get_variable是一个函数;
(2) tf.Variable只能生成独一无二的变量,即如果给出的name已经存在,则会自动修改生成新的变量name;
(3) tf.get_variable可以用于生成共享变量。默认情况下,该函数会进行变量名检查,如果有重复则会报错。当在指定变量域中声明可
以变量共享时,可以重复使用该变量(例如RNN中的参数共享)。
下面给出简单的的示例程序:
输出结果为:
scope1/x1:0 [ 1.]scope1/x1_1:0 [ 0.]scope1/y1:0 1.0scope1/y1:0 1.01. tf.Variable(…)
tf.Variable(…)使用给定初始值来创建一个新变量,该变量会默认添加到 graph collections listed in collections, which defaults to [GraphKeys.GLOBAL_VARIABLES]。
如果trainable属性被设置为True,该变量同时也会被添加到graph collection GraphKeys.TRAINABLE_VARIABLES.
# tf.Variable__init__( initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None, constraint=None)2. tf.get_variable(…)
tf.get_variable(…)的返回值有两种情形:
使用指定的initializer来创建一个新变量;
当变量重用时,根据变量名搜索返回一个由tf.get_variable创建的已经存在的变量;
3. 根据名称查找变量
在创建变量时,即使我们不指定变量名称,程序也会自动进行命名。于是,我们可以很方便的根据名称来查找变量,这在抓取参数、finetune模型等很多时候都很有用。
示例1:
通过在tf.global_variables()变量列表中,根据变量名进行匹配搜索查找。 该种搜索方式,可以同时找到由tf.Variable或者tf.get_variable创建的变量。
import tensorflow as tfx = tf.Variable(1,name='x')y = tf.get_variable(name='y',shape=[1,2])for var in tf.global_variables(): if var.name == 'x:0': print(var)示例2:
利用get_tensor_by_name()同样可以获得由tf.Variable或者tf.get_variable创建的变量。
需要注意的是,此时获得的是Tensor, 而不是Variable,因此 x不等于x1.
示例3:
针对tf.get_variable创建的变量,可以利用变量重用来直接获取已经存在的变量。
with tf.variable_scope("foo"): bar1 = tf.get_variable("bar", (2,3)) # createwith tf.variable_scope("foo", reuse=True): bar2 = tf.get_variable("bar") # reusewith tf.variable_scope("", reuse=True): # root variable scope bar3 = tf.get_variable("foo/bar") # reuse (equivalent to the above)print((bar1 is bar2) and (bar2 is bar3))以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、TensorFlow变量管理1.TensorFLow还提供了tf.get_variable函数来创建或者获取变量,tf.variable用于创建变量时,其功
tensorflow版本1.4获取变量维度是一个使用频繁的操作,在tensorflow中获取变量维度主要用到的操作有以下三种:Tensor.shapeTenso
本文实例分析了java中成员变量与局部变量区别。分享给大家供大家参考。具体分析如下:成员变量:在这个类里定义的私有变量,属于这个类。创建以及使用成员变量复制代码
本文实例讲述了php使用变量动态创建类的对象。分享给大家供大家参考,具体如下:这是一个能用变量动态创建类的对象的用法,就是根据$pay_code变量值来创建对象
使用TensorFlow的一个优势是,它可以维护操作状态和基于反向传播自动地更新模型变量。TensorFlow通过计算图来更新变量和最小化损失函数来反向传播误差