tf.compat.v1.assign

Update ref by assigning value to it.

Migrate to TF2

tf.compat.v1.assign is mostly compatible with eager execution and tf.function. However, argument 'validate_shape' will be ignored. To avoid shape validation, set 'shape' to tf.TensorShape(None) when constructing the variable:

import tensorflow as tf
a = tf.Variable([1], shape=tf.TensorShape(None))
tf.compat.v1.assign(a, [2,3])

To switch to the native TF2 style, one could use method 'assign' of tf.Variable:

How to Map Arguments

TF1 Arg NameTF2 Arg NameNote
refselfIn assign() method
valuevalueIn assign() method
validate_shapeNot supportedSpecify shape in the constructor to replicate behavior
use_lockinguse_lockingIn assign() method
namenameIn assign() method
-read_valueSet to True to replicate behavior (True is default)

Description

Used in the notebooks

Used in the tutorials

This operation outputs a Tensor that holds the new value of ref after the value has been assigned. This makes it easier to chain operations that need to use the reset value.

refA mutable Tensor. Should be from a Variable node. May be uninitialized.
valueA Tensor. Must have the same shape and dtype as ref. The value to be assigned to the variable.
validate_shapeAn optional bool. Defaults to True. If true, the operation will validate that the shape of 'value' matches the shape of the Tensor being assigned to. If false, 'ref' will take on the shape of 'value'.
use_lockingAn optional bool. Defaults to True. If True, the assignment will be protected by a lock; otherwise the behavior is undefined, but may exhibit less contention.
nameA name for the operation (optional).

A Tensor that will hold the new value of ref after the assignment has completed.

Before & After Usage Example

Before:

with tf.Graph().as_default():
  with tf.compat.v1.Session() as sess:
    a = tf.compat.v1.Variable(0, dtype=tf.int64)
    sess.run(a.initializer)
    update_op = tf.compat.v1.assign(a, 2)
    res_a = sess.run(update_op)
    res_a
2

After:

b = tf.Variable(0, dtype=tf.int64)
res_b = b.assign(2)
res_b.numpy()
2