assign()函数
tf中assign()函数可用于对变量进行更新包括变量的value和shape。
涉及以下函数:
tf.assign(ref, value, validate_shape = None, use_locking = None, name=None)
tf.assign_add(ref, value, use_locking = None, name=None)
tf.assign_sub(ref, value, use_locking = None, name=None)
tf.variable.assign(value, use_locking=False)
tf.variable.assign_add(delta, use_locking=False)
tf.variable.assign_sub(delta, use_locking=False)
这6个函数本质上是一样的,都是用来对变量值进行更新,其中tf.assign还可以更新变量的shape。
解释一下它们的意思:tf.assign是用value的值赋给ref,这种赋值会覆盖掉原来的值,即更新而不会创建一个新的tensor。tf.assign_add相当于ref=ref+value来更新ref。tf.assign_sub相当于ref=ref-value来更新ref。tf.variable.assign相当于tf.assign(ref, value)。同理tf.variable.assign_add和tf.variable.assign_sub。
下面对tf.assign函数进行详细说明。
tf.assign(ref, value, validate_shape = None, use_locking = None, name=None)
args:
ref:一个可变的张量。应该来自变量节点,节点可能未初始化,参考下面的例子。
value:张量。必须具有与 ref 相同的类型。是要分配给变量的值。
validate_shape:一个可选的 bool。默认为 True。如果为 true, 则操作将验证 "value" 的形状是否与分配给的张量的形状相匹配;如果为 false, "ref" 将对 "值" 的形状进行引用。
use_locking:一个可选的 bool。默认为 True。如果为 True, 则分配将受锁保护;否则, 该行为是未定义的, 但可能会显示较少的争用。
name:操作的名称(可选)。
返回:
一个在赋值完成后将保留 "ref" 新值的张量。