This operation outputs ref after the update is done.
This makes it easier to chain operations that need to use the reset value.
Unlike tf.math.subtract, this op does not broadcast. ref and value
must have the same shape.
Args
ref
A mutable Tensor. Must be one of the following types: float32,
float64, int64, int32, uint8, uint16, int16, int8,
complex64, complex128, qint8, quint8, qint32, half. Should be
from a Variable node.
value
A Tensor. Must have the same shape and dtype as ref. The value to
be subtracted to the variable.
use_locking
An optional bool. Defaults to False. If True, the
subtraction will be protected by a lock; otherwise the behavior is
undefined, but may exhibit less contention.
name
A name for the operation (optional).
Returns
Same as ref. Returned as a convenience for operations that want
to use the new value after the variable has been updated.
[null,null,["Last updated 2024-04-26 UTC."],[],[],null,["# tf.compat.v1.assign_sub\n\n\u003cbr /\u003e\n\n|-----------------------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.16.1/tensorflow/python/ops/state_ops.py#L133-L202) |\n\nUpdate `ref` by subtracting `value` from it. \n\n tf.compat.v1.assign_sub(\n ref, value, use_locking=None, name=None\n )\n\n\u003cbr /\u003e\n\nMigrate to TF2\n--------------\n\n\u003cbr /\u003e\n\n| **Caution:** This API was designed for TensorFlow v1. Continue reading for details on how to migrate from this API to a native TensorFlow v2 equivalent. See the [TensorFlow v1 to TensorFlow v2 migration guide](https://www.tensorflow.org/guide/migrate) for instructions on how to migrate the rest of your code.\n\n[`tf.compat.v1.assign_sub`](../../../tf/compat/v1/assign_sub) is mostly compatible with eager\nexecution and [`tf.function`](../../../tf/function).\n\nTo switch to the native TF2 style, one could use method 'assign_sub' of\n[`tf.Variable`](../../../tf/Variable):\n\n#### How to Map Arguments\n\n| TF1 Arg Name | TF2 Arg Name | Note |\n|---------------|---------------|-----------------------------------------------------|\n| `ref` | `self` | In `assign_sub()` method |\n| `value` | `value` | In `assign_sub()` method |\n| `use_locking` | `use_locking` | In `assign_sub()` method |\n| `name` | `name` | In `assign_sub()` method |\n| - | `read_value` | Set to True to replicate behavior (True is default) |\n\n#### Before \\& After Usage Example\n\nBefore: \n\n with tf.Graph().as_default():\n with tf.compat.v1.Session() as sess:\n a = tf.compat.v1.Variable(1, dtype=tf.int64)\n sess.run(a.initializer)\n update_op = tf.compat.v1.assign_sub(a, 1)\n res_a = sess.run(update_op)\n res_a\n 0\n\nAfter: \n\n b = tf.Variable(1, dtype=tf.int64)\n res_b = b.assign_sub(1)\n res_b.numpy()\n 0\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nDescription\n-----------\n\nThis operation outputs `ref` after the update is done.\nThis makes it easier to chain operations that need to use the reset value.\nUnlike [`tf.math.subtract`](../../../tf/math/subtract), this op does not broadcast. `ref` and `value`\nmust have the same shape.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `ref` | A mutable `Tensor`. Must be one of the following types: `float32`, `float64`, `int64`, `int32`, `uint8`, `uint16`, `int16`, `int8`, `complex64`, `complex128`, `qint8`, `quint8`, `qint32`, `half`. Should be from a `Variable` node. |\n| `value` | A `Tensor`. Must have the same shape and dtype as `ref`. The value to be subtracted to the variable. |\n| `use_locking` | An optional `bool`. Defaults to `False`. If True, the subtraction will be protected by a lock; otherwise the behavior is undefined, but may exhibit less contention. |\n| `name` | A name for the operation (optional). |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ------- ||\n|---|---|\n| Same as `ref`. Returned as a convenience for operations that want to use the new value after the variable has been updated. ||\n\n\u003cbr /\u003e"]]