阅读(1750) (10)

TensorFlow变量函数:tf.get_local_variable

2017-10-23 17:28:49 更新
函数:tf.get_local_variable
get_local_variable(
    *args,
    **kwargs
)

定义在:tensorflow/python/ops/variable_scope.py

参见指南:变量>共享变量

获取一个现有的局部变量或创建一个新的.
该函数中的行为与 get_variable 中的相同,只是将变量添加到 LOCAL_VARIABLES 集合中,并将 trainable 设置为 False.此函数使用当前变量范围前缀名称,并执行重用检查.有关重用如何工作的详细说明, 请参见变量范围.下面是一个基本示例:

with tf.variable_scope("foo"):
    v = tf.get_variable("v", [1])  # v.name == "foo/v:0"
    w = tf.get_variable("w", [1])  # w.name == "foo/w:0"
with tf.variable_scope("foo", reuse=True):
    v1 = tf.get_variable("v")  # The same as v above.

如果初始值设定项(initializer)为 None(默认),则将使用在变量范围内传递的默认初始值设定项.如果另一个也是 None,则 glorot_uniform_initializer 将被使用.初始值设定项也可以是张量,在这种情况下,变量被初始化为该值和形状.

类似地,如果正则化器(regularizer)是 None(默认),则将使用在变量范围内传递的默认正则符号(如果为 None,则默认情况下不执行正则化).

如果提供了分区,则返回 PartitionedVariable.作为张量访问这个对象,会返回沿分区轴的碎片.

一些有用的分区可用.参见,例如:variable_axis_size_partitioner 和 min_max_variable_partitioner.

参数:

  • name:新变量或现有变量的名称.
  • shape:新变量或现有变量的形状.
  • dtype:新变量或现有变量的类型(默认为 DT_FLOAT).
  • initializer:创建变量的初始化器.
  • regularizer:一个函数(张量 - >张量或无);将其应用于新创建的变量的结果将被添加到集合 tf.GraphKeys.REGULARIZATION_LOSSES 中,并可用于正则化.
  • collections:要将变量添加到其中的图形集合键的列表.默认为 [GraphKeys.LOCAL_VARIABLES](见 tf.Variable).
  • caching_device:可选的设备字符串或函数,描述变量应该被缓存以读取的位置.默认为变量的设备,如果不是 None,则在其他设备上进行缓存.典型的用法的在使用该变量的操作所在的设备上进行缓存,通过 Switch 和其他条件语句来复制重复数据删除.
  • partitioner:(可选)可调用性,它接受要创建的变量的完全定义的 TensorShape 和 dtype,并且返回每个坐标轴的分区列表(当前只能对一个坐标轴进行分区).
  • validate_shape:如果为假,则允许使用未知形状的值初始化变量.如果为真,则默认情况下,initial_value 的形状必须是已知的.
  • use_resource:如果为假,则创建一个常规变量.如果为真,则创建一个实验性的 ResourceVariable,而不是具有明确定义的语义.默认为假(稍后将更改为真).
  • custom_getter:可调用的,将第一个参数作为真正的 getter,并允许覆盖内部的 get_variable 方法.custom_getter 的签名应该符合这种方法,但最经得起未来考验的版本将允许更改:def custom_getter(getter, *args, **kwargs).还允许直接访问所有 get_variable 参数:def custom_getter(getter, name, *args, **kwargs).创建具有修改的名称的变量的简单标识自定义 getter 是:python def custom_getter(getter, name, *args, **kwargs): return getter(name + '_suffix', *args, **kwargs)

返回值:

已创建或已存在的 Variable(如果使用了分区,则为 PartitionedVariable).

可能引发的异常:

  • ValueError:当创建新的变量和形状时,在变量创建时违反重用,或当 initializer 的 dtype 和 dtype 不匹配时.在 variable_scope 中设置重用.