tf.experimental.dtensor.DVariable
Замена tf.Variable, учитывающая размещение начального значения.
Наследует от: Variable
tf.experimental.dtensor.DVariable(
initial_value, *args, dtype=None, **kwargs
)
Используется в блокнотах
| Используется в руководстве | Используется в учебных пособиях |
|---|---|
Класс также обрабатывает операции сохранения и восстановления в DTensor. Обратите внимание: в данный момент DVariable может использовать обычный tf.Variable, если initial_value не является DTensor.
| Атрибуты | |
|---|---|
aggregation | |
constraint | Возвращает функцию ограничения, связанную с этой переменной. |
create | Операция, отвечающая за инициализацию этой переменной. |
device | Устройство, на котором находится эта переменная. |
dtype | Тип данных этой переменной. |
graph | Graph этой переменной. |
handle | Дескриптор, с помощью которого можно получить доступ к этой переменной. |
initial_value | Возвращает Tensor, используемый в качестве начального значения переменной. |
initializer | Операция, отвечающая за инициализацию этой переменной. |
name | Имя дескриптора этой переменной. |
op | Операция для этой переменной. |
save_as_bf16 | |
shape | Форма этой переменной. |
synchronization | |
trainable | |
Дочерние классы
Методы
assign
assign(
value, use_locking=None, name=None, read_value=True
)
Присваивает этой переменной новое значение.
| Аргументы | |
|---|---|
value | Tensor. Новое значение этой переменной. |
use_locking | Если True, во время присваивания используется блокировка. |
name | Имя, используемое для присваивания. |
read_value | bool. Нужно ли считывать и возвращать новое значение переменной. |
| Возвращает | |
|---|---|
Если read_value равно True, этот метод вернёт новое значение переменной после завершения присваивания. В противном случае в режиме графа будет возвращён Operation, выполняющий присваивание, а в режиме eager — None. |
assign_add
assign_add(
delta, use_locking=None, name=None, read_value=True
)
Прибавляет значение к этой переменной.
| Аргументы | |
|---|---|
delta | Tensor. Значение, которое нужно прибавить к этой переменной. |
use_locking | Если True, во время операции используется блокировка. |
name | Имя, используемое для операции. |
read_value | bool. Нужно ли считывать и возвращать новое значение переменной. |
| Возвращает | |
|---|---|
Если read_value равно True, этот метод вернёт новое значение переменной после завершения присваивания. В противном случае в режиме графа будет возвращён Operation, выполняющий присваивание, а в режиме eager — None. |
assign_sub
assign_sub(
delta, use_locking=None, name=None, read_value=True
)
Вычитает значение из этой переменной.
| Аргументы | |
|---|---|
delta | Tensor. Значение, которое нужно вычесть из этой переменной. |
use_locking | Если True, во время операции используется блокировка. |
name | Имя, используемое для операции. |
read_value | bool. Нужно ли считывать и возвращать новое значение переменной. |
| Возвращает | |
|---|---|
Если read_value равно True, этот метод вернёт новое значение переменной после завершения присваивания. В противном случае в режиме графа будет возвращён Operation, выполняющий присваивание, а в режиме eager — None. |
batch_scatter_update
batch_scatter_update(
sparse_delta, use_locking=False, name=None
)
Пакетно присваивает этой переменной значения tf.IndexedSlices.
Аналогично batch_gather. Предполагается, что эта переменная и разреженный тензор sparse_delta IndexedSlices имеют ряд одинаковых для всех них начальных измерений, а обновления выполняются по последнему измерению индексов. Иными словами, измерения должны быть следующими:
num_prefix_dims = sparse_delta.indices.ndims - 1 batch_dim = num_prefix_dims + 1 sparse_delta.updates.shape = sparse_delta.indices.shape + var.shape[ batch_dim:]
где
sparse_delta.updates.shape[:num_prefix_dims] == sparse_delta.indices.shape[:num_prefix_dims] == var.shape[:num_prefix_dims]
Выполняемую операцию можно представить так:
var[i_1, ..., i_n, sparse_delta.indices[i_1, ..., i_n, j]] = sparse_delta.updates[ i_1, ..., i_n, j]
Если sparse_delta.indices — это одномерный тензор, эта операция эквивалентна scatter_update.
Чтобы избежать этой операции, можно выполнить цикл по первому ndims переменной и использовать scatter_update для подтензоров, полученных при срезе первого измерения. Это допустимый вариант для ndims = 1, но он менее эффективен, чем данная реализация.
| Аргументы | |
|---|---|
sparse_delta | tf.IndexedSlices, присваиваемые этой переменной. |
use_locking | Если True, во время операции используется блокировка. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённую переменную. |
| Вызывает исключение | |
|---|---|
TypeError | если sparse_delta не является IndexedSlices. |
count_up_to
count_up_to(
limit
)
Увеличивает значение этой переменной, пока оно не достигнет limit. (устарело)
При выполнении этой операции значение переменной увеличивается на 1. Если в результате увеличения значение переменной превысит limit, операция вызовет исключение OutOfRangeError.
Если ошибка не возникает, операция возвращает значение переменной до увеличения.
По сути, это краткая форма записи count_up_to(self, limit).
| Аргументы | |
|---|---|
limit | Значение, при достижении которого увеличение переменной вызывает ошибку. |
| Возвращает | |
|---|---|
Tensor, содержащий значение переменной до увеличения. Если никакая другая операция не изменяет эту переменную, все полученные значения будут различными. |
eval
eval(
session=None
)
Вычисляет и возвращает значение этой переменной.
experimental_ref
experimental_ref()
УСТАРЕВШАЯ ФУНКЦИЯ
from_proto
@staticmethod
from_proto(
variable_def, import_scope=None
)
Возвращает объект Variable, созданный из variable_def.
gather_nd
gather_nd(
indices, name=None
)
Разреженно считывает значение этой переменной с помощью gather_nd.
get_shape
get_shape() -> tf.TensorShape
Псевдоним Variable.shape.
initialized_value
initialized_value()
Возвращает значение инициализированной переменной. (устарело)
Используйте этот метод вместо самой переменной, чтобы инициализировать другую переменную значением, зависящим от значения этой переменной.
# Initialize 'v' with a random tensor. v = tf.Variable(tf.random.truncated_normal([10, 40])) # Use `initialized_value` to guarantee that `v` has been # initialized before its value is used to initialize `w`. # The random values are picked only once. w = tf.Variable(v.initialized_value() * 2.0)
| Возвращает | |
|---|---|
Tensor, содержащее значение этой переменной после выполнения её инициализатора. |
is_initialized
is_initialized(
name=None
)
Проверяет, инициализирована ли переменная-ресурс.
Выводит скалярное булево значение, указывающее, инициализирован ли тензор.
| Аргументы | |
|---|---|
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Tensor типа bool. |
load
load(
value, session=None
)
Загружает в эту переменную новое значение. (устарело)
Записывает новое значение в память переменной. Не добавляет операции в граф.
Для этого метода требуется сеанс, в котором запущен граф, содержащий эту переменную. Если сеанс не передан, используется сеанс по умолчанию. Дополнительные сведения о запуске графа и сеансах см. в разделе tf.compat.v1.Session.
v = tf.Variable([1, 2])
init = tf.compat.v1.global_variables_initializer()
with tf.compat.v1.Session() as sess:
sess.run(init)
# Usage passing the session explicitly.
v.load([2, 3], sess)
print(v.eval(sess)) # prints [2 3]
# Usage with the default session. The 'with' block
# above makes 'sess' the default session.
v.load([3, 4], sess)
print(v.eval()) # prints [3 4]
| Аргументы | |
|---|---|
value | Новое значение переменной |
session | Сеанс для вычисления этой переменной. Если не указан, используется сеанс по умолчанию. |
| Вызывает исключение | |
|---|---|
ValueError | Сеанс не передан, и сеанс по умолчанию отсутствует |
numpy
numpy()
read_value
read_value()
Создаёт операцию, считывающую значение этой переменной.
Используйте этот метод при нескольких операциях чтения или если значение нужно считывать только после выполнения некоторого условия.
| Возвращает | |
|---|---|
| Значение переменной. |
read_value_no_copy
read_value_no_copy()
Создаёт операцию, считывающую значение этой переменной без копирования.
Переменная считывается без создания копии, даже если доступ к ней осуществлялся разреженно. Переменные в режиме копирования при чтении будут преобразованы в режим копирования при записи.
| Возвращает | |
|---|---|
| Значение переменной. |
ref
ref()
Возвращает хешируемый объект-ссылку на эту Variable.
Основной сценарий использования этого API — добавление переменных в множество или словарь. Мы не можем добавлять переменные в множество или словарь, поскольку variable.__hash__() больше недоступен начиная с TensorFlow 2.0.
Следующий код будет вызывать исключение начиная с версии 2.0
x = tf.Variable(5)
y = tf.Variable(10)
z = tf.Variable(10)
variable_set = {x, y, z}
Traceback (most recent call last):
TypeError: Variable is unhashable. Instead, use tensor.ref() as the key.
variable_dict = {x: 'five', y: 'ten'}
Traceback (most recent call last):
TypeError: Variable is unhashable. Instead, use tensor.ref() as the key.Вместо этого можно использовать variable.ref().
variable_set = {x.ref(), y.ref(), z.ref()}
x.ref() in variable_set
True
variable_dict = {x.ref(): 'five', y.ref(): 'ten', z.ref(): 'ten'}
variable_dict[y.ref()]
'ten'Кроме того, объект-ссылка предоставляет функцию .deref(), которая возвращает исходную Variable.
x = tf.Variable(5) x.ref().deref() <tf.Variable 'Variable:0' shape=() dtype=int32, numpy=5>
scatter_add
scatter_add(
sparse_delta, use_locking=False, name=None
)
Прибавляет tf.IndexedSlices к этой переменной.
| Аргументы | |
|---|---|
sparse_delta | tf.IndexedSlices, которые нужно прибавить к этой переменной. |
use_locking | Если True, во время операции используется блокировка. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённую переменную. |
| Вызывает исключение | |
|---|---|
TypeError | если sparse_delta не является IndexedSlices. |
scatter_div
scatter_div(
sparse_delta, use_locking=False, name=None
)
Делит эту переменную на tf.IndexedSlices.
| Аргументы | |
|---|---|
sparse_delta | tf.IndexedSlices, на которые нужно разделить эту переменную. |
use_locking | Если True, во время операции используется блокировка. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённую переменную. |
| Вызывает исключение | |
|---|---|
TypeError | если sparse_delta не является IndexedSlices. |
scatter_max
scatter_max(
sparse_delta, use_locking=False, name=None
)
Обновляет эту переменную, присваивая ей максимум из tf.IndexedSlices и её текущего значения.
| Аргументы | |
|---|---|
sparse_delta | tf.IndexedSlices, используемые как аргумент функции max вместе с этой переменной. |
use_locking | Если True, во время операции используется блокировка. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённую переменную. |
| Вызывает исключение | |
|---|---|
TypeError | если sparse_delta не является IndexedSlices. |
scatter_min
scatter_min(
sparse_delta, use_locking=False, name=None
)
Обновляет эту переменную, присваивая ей минимум из tf.IndexedSlices и её текущего значения.
| Аргументы | |
|---|---|
sparse_delta | tf.IndexedSlices, используемые как аргумент функции min вместе с этой переменной. |
use_locking | Если True, во время операции используется блокировка. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённую переменную. |
| Вызывает исключение | |
|---|---|
TypeError | если sparse_delta не является IndexedSlices. |
scatter_mul
scatter_mul(
sparse_delta, use_locking=False, name=None
)
Умножает эту переменную на tf.IndexedSlices.
| Аргументы | |
|---|---|
sparse_delta | tf.IndexedSlices, на которые нужно умножить эту переменную. |
use_locking | Если True, во время операции используется блокировка. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённую переменную. |
| Вызывает исключение | |
|---|---|
TypeError | если sparse_delta не является IndexedSlices. |
scatter_nd_add
scatter_nd_add(
indices, updates, name=None
)
Выполняет разреженное сложение для отдельных значений или срезов переменной.
ref — это Tensor ранга P, а indices — это Tensor ранга Q.
indices должен быть целочисленным тензором, содержащим индексы в ref. Он должен иметь форму [d_0, ..., d_{Q-2}, K], где 0 < K <= P.
Внутреннее измерение indices (длиной K) соответствует индексам элементов (если K = P) или срезов (если K < P) вдоль измерения номер K в ref.
updates — это Tensor ранга Q-1+P-K с формой:
[d_0, ..., d_{Q-2}, ref.shape[K], ..., ref.shape[P-1]].
Например, предположим, что мы хотим добавить 4 разбросанных элемента в тензор ранга 1 из 8 элементов. В Python это обновление выглядело бы так:
ref = tf.Variable([1, 2, 3, 4, 5, 6, 7, 8]) indices = tf.constant([[4], [3], [1] ,[7]]) updates = tf.constant([9, 10, 11, 12]) add = ref.scatter_nd_add(indices, updates) with tf.compat.v1.Session() as sess: print sess.run(add)
В результате ref будет обновлён следующим образом:
[1, 13, 3, 14, 14, 6, 7, 20]
Подробнее об обновлении срезов см. в разделе tf.scatter_nd.
| Аргументы | |
|---|---|
indices | Индексы, используемые в операции. |
updates | Значения, используемые в операции. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённая переменная. |
scatter_nd_max
scatter_nd_max(
indices, updates, name=None
)
Обновляет эту переменную, устанавливая максимум из tf.IndexedSlices и её текущего значения.
ref — это Tensor ранга P, а indices — это Tensor ранга Q.
indices должен быть целочисленным тензором, содержащим индексы в ref. Он должен иметь форму [d_0, ..., d_{Q-2}, K], где 0 < K <= P.
Внутреннее измерение indices (длиной K) соответствует индексам элементов (если K = P) или срезов (если K < P) вдоль измерения номер K в ref.
updates — это Tensor ранга Q-1+P-K с формой:
[d_0, ..., d_{Q-2}, ref.shape[K], ..., ref.shape[P-1]].
Подробнее об обновлении срезов см. в разделе tf.scatter_nd.
| Аргументы | |
|---|---|
indices | Индексы, используемые в операции. |
updates | Значения, используемые в операции. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённая переменная. |
scatter_nd_min
scatter_nd_min(
indices, updates, name=None
)
Обновляет эту переменную, устанавливая минимум из tf.IndexedSlices и её текущего значения.
ref — это Tensor ранга P, а indices — это Tensor ранга Q.
indices должен быть целочисленным тензором, содержащим индексы в ref. Он должен иметь форму [d_0, ..., d_{Q-2}, K], где 0 < K <= P.
Внутреннее измерение indices (длиной K) соответствует индексам элементов (если K = P) или срезов (если K < P) вдоль измерения номер K в ref.
updates — это Tensor ранга Q-1+P-K с формой:
[d_0, ..., d_{Q-2}, ref.shape[K], ..., ref.shape[P-1]].
Подробнее об обновлении срезов см. в разделе tf.scatter_nd.
| Аргументы | |
|---|---|
indices | Индексы, используемые в операции. |
updates | Значения, используемые в операции. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённая переменная. |
scatter_nd_sub
scatter_nd_sub(
indices, updates, name=None
)
Выполняет разреженное вычитание отдельных значений или срезов в Variable.
ref — это Tensor ранга P, а indices — это Tensor ранга Q.
indices должен быть целочисленным тензором, содержащим индексы в ref. Он должен иметь форму [d_0, ..., d_{Q-2}, K], где 0 < K <= P.
Внутреннее измерение indices (длиной K) соответствует индексам элементов (если K = P) или срезов (если K < P) вдоль измерения номер K в ref.
updates — это Tensor ранга Q-1+P-K с формой:
[d_0, ..., d_{Q-2}, ref.shape[K], ..., ref.shape[P-1]].
Например, предположим, что мы хотим добавить 4 разбросанных элемента в тензор ранга 1 из 8 элементов. В Python это обновление выглядело бы так:
ref = tf.Variable([1, 2, 3, 4, 5, 6, 7, 8]) indices = tf.constant([[4], [3], [1] ,[7]]) updates = tf.constant([9, 10, 11, 12]) op = ref.scatter_nd_sub(indices, updates) with tf.compat.v1.Session() as sess: print sess.run(op)
В результате ref будет обновлён следующим образом:
[1, -9, 3, -6, -6, 6, 7, -4]
Подробнее об обновлении срезов см. в разделе tf.scatter_nd.
| Аргументы | |
|---|---|
indices | Индексы, используемые в операции. |
updates | Значения, используемые в операции. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённая переменная. |
scatter_nd_update
scatter_nd_update(
indices, updates, name=None
)
Выполняет разреженное присваивание отдельных значений или срезов в Variable.
ref — это Tensor ранга P, а indices — это Tensor ранга Q.
indices должен быть целочисленным тензором, содержащим индексы в ref. Он должен иметь форму [d_0, ..., d_{Q-2}, K], где 0 < K <= P.
Внутреннее измерение indices (длиной K) соответствует индексам элементов (если K = P) или срезов (если K < P) вдоль измерения номер K в ref.
updates — это Tensor ранга Q-1+P-K с формой:
[d_0, ..., d_{Q-2}, ref.shape[K], ..., ref.shape[P-1]].
Например, предположим, что мы хотим добавить 4 разбросанных элемента в тензор ранга 1 из 8 элементов. В Python это обновление выглядело бы так:
ref = tf.Variable([1, 2, 3, 4, 5, 6, 7, 8]) indices = tf.constant([[4], [3], [1] ,[7]]) updates = tf.constant([9, 10, 11, 12]) op = ref.scatter_nd_update(indices, updates) with tf.compat.v1.Session() as sess: print sess.run(op)
В результате ref будет обновлён следующим образом:
[1, 11, 3, 10, 9, 6, 7, 12]
Подробнее об обновлении срезов см. в разделе tf.scatter_nd.
| Аргументы | |
|---|---|
indices | Индексы, используемые в операции. |
updates | Значения, используемые в операции. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённая переменная. |
scatter_sub
scatter_sub(
sparse_delta, use_locking=False, name=None
)
Вычитает tf.IndexedSlices из этой переменной.
| Аргументы | |
|---|---|
sparse_delta | tf.IndexedSlices, которое нужно вычесть из этой переменной. |
use_locking | Если True, во время операции используется блокировка. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённая переменная. |
| Вызывает исключение | |
|---|---|
TypeError | если sparse_delta не является IndexedSlices. |
scatter_update
scatter_update(
sparse_delta, use_locking=False, name=None
)
Присваивает этой переменной значение tf.IndexedSlices.
| Аргументы | |
|---|---|
sparse_delta | tf.IndexedSlices, которое нужно присвоить этой переменной. |
use_locking | Если True, во время операции используется блокировка. |
name | имя операции. |
| Возвращает | |
|---|---|
| Обновлённая переменная. |
| Вызывает исключение | |
|---|---|
TypeError | если sparse_delta не является IndexedSlices. |
set_shape
set_shape(
shape
)
Переопределяет форму этой переменной.
| Аргументы | |
|---|---|
shape | TensorShape, представляющий переопределённую форму. |
sparse_read
sparse_read(
indices, name=None
)
Разреженно считывает значение этой переменной, используя gather.
to_proto
to_proto(
export_scope=None
)
Преобразует ResourceVariable в протокол буфера VariableDef.
| Аргументы | |
|---|---|
export_scope | Необязательный string. Область имён, которую нужно удалить. |
| Вызывает исключение | |
|---|---|
RuntimeError | При выполнении в режиме EAGER. |
| Возвращает | |
|---|---|
Протокол буфера VariableDef или None, если Variable не входит в указанную область имён. |
value
value()
Кэшированная операция, считывающая значение этой переменной.
__abs__
__abs__(
name=None
)
__add__
__add__(
y
)
__and__
__and__(
y
)
__array__
__array__(
dtype=None
)
Позволяет напрямую преобразовать значение в массив numpy.
np.array(tf.Variable([1.0])) array([1.], dtype=float32)
| Возвращает | |
|---|---|
| Значение переменной в виде массива numpy. |
__bool__
__bool__()
__div__
__div__(
y
)
__eq__
__eq__(
other
)
Поэлементно сравнивает две переменные на равенство.
__floordiv__
__floordiv__(
y
)
__ge__
__ge__(
y: Annotated[Any, tf.raw_ops.Any],
name=None
) -> Annotated[Any, tf.raw_ops.Any]
Поэлементно возвращает истинность выражения (x >= y).
Примечание: math.greater_equal поддерживает широковещательное вещание. Подробнее о широковещательном вещании — здесь
Пример:
x = tf.constant([5, 4, 6, 7]) y = tf.constant([5, 2, 5, 10]) tf.math.greater_equal(x, y) ==> [True, True, True, False] x = tf.constant([5, 4, 6, 7]) y = tf.constant([5]) tf.math.greater_equal(x, y) ==> [True, False, True, True]
| Аргументы | |
|---|---|
x | Tensor. Должен иметь один из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Tensor типа bool. |
__getitem__
__getitem__(
slice_spec
)
Создаёт вспомогательный объект среза для заданной переменной.
Это позволяет создать подтензор из части текущего содержимого переменной. Подробные примеры создания срезов см. в разделе tf.Tensor.getitem.
Кроме того, эта функция позволяет присваивать значения выбранному диапазону. Это аналогично функциональности __setitem__ в Python. Однако синтаксис отличается, чтобы пользователь мог сохранить операцию присваивания для группировки или передачи в sess.run() в TF1. Например:
import tensorflow as tf A = tf.Variable([[1,2,3], [4,5,6], [7,8,9]], dtype=tf.float32) print(A[:2, :2]) # => [[1,2], [4,5]] A[:2,:2].assign(22. * tf.ones((2, 2)))) print(A) # => [[22, 22, 3], [22, 22, 6], [7,8,9]]
Обратите внимание, что присваивания пока не поддерживают семантику широковещательного вещания NumPy.
| Аргументы | |
|---|---|
var | Объект ops.Variable. |
slice_spec | Аргументы для Tensor.getitem. |
| Возвращает | |
|---|---|
Соответствующий срез «tensor», определяемый «slice_spec», в виде оператора. У оператора также есть метод assign(), который можно использовать для создания оператора присваивания. |
| Вызывает исключение | |
|---|---|
ValueError | Если размер диапазона среза отрицателен. |
TypeError | TypeError: если индексы среза не являются int, slice, ellipsis, tf.newaxis или тензорами int32/int64. |
__gt__
__gt__(
y: Annotated[Any, tf.raw_ops.Any],
name=None
) -> Annotated[Any, tf.raw_ops.Any]
Поэлементно возвращает истинность выражения (x > y).
Примечание: math.greater поддерживает широковещательное вещание. Подробнее о широковещательном вещании — здесь
Пример:
x = tf.constant([5, 4, 6]) y = tf.constant([5, 2, 5]) tf.math.greater(x, y) ==> [False, True, True] x = tf.constant([5, 4, 6]) y = tf.constant([5]) tf.math.greater(x, y) ==> [False, False, True]
| Аргументы | |
|---|---|
x | Tensor. Должен иметь один из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Tensor типа bool. |
__invert__
__invert__(
name=None
)
__iter__
__iter__()
При eager-выполнении выполняет итерацию по значению переменной.
__le__
__le__(
y: Annotated[Any, tf.raw_ops.Any],
name=None
) -> Annotated[Any, tf.raw_ops.Any]
Поэлементно возвращает истинность выражения (x <= y).
Примечание: math.less_equal поддерживает широковещательное вещание. Подробнее о широковещательном вещании — здесь
Пример:
x = tf.constant([5, 4, 6]) y = tf.constant([5]) tf.math.less_equal(x, y) ==> [True, True, False] x = tf.constant([5, 4, 6]) y = tf.constant([5, 6, 6]) tf.math.less_equal(x, y) ==> [True, True, True]
| Аргументы | |
|---|---|
x | Tensor. Должен иметь один из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Tensor типа bool. |
__lt__
__lt__(
y: Annotated[Any, tf.raw_ops.Any],
name=None
) -> Annotated[Any, tf.raw_ops.Any]
Поэлементно возвращает истинность выражения (x < y).
Примечание: math.less поддерживает широковещательное вещание. Подробнее о широковещательном вещании — здесь
Пример:
x = tf.constant([5, 4, 6]) y = tf.constant([5]) tf.math.less(x, y) ==> [False, True, False] x = tf.constant([5, 4, 6]) y = tf.constant([5, 6, 7]) tf.math.less(x, y) ==> [False, True, True]
| Аргументы | |
|---|---|
x | Tensor. Должен иметь один из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Tensor типа bool. |
__matmul__
__matmul__(
y
)
__mod__
__mod__(
y
)
__mul__
__mul__(
y
)
__ne__
__ne__(
other
)
Поэлементно сравнивает две переменные на равенство.
__neg__
__neg__(
name=None
) -> Annotated[Any, tf.raw_ops.Any]
Вычисляет поэлементное отрицательное значение.
То есть \(y = -x\).
| Аргументы | |
|---|---|
x | Tensor. Должен иметь один из следующих типов: bfloat16, half, float32, float64, int8, int16, int32, int64, complex64, complex128. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Tensor. Имеет тот же тип, что и x. |
__nonzero__
__nonzero__()
__or__
__or__(
y
)
__pow__
__pow__(
y
)
__radd__
__radd__(
x
)
__rand__
__rand__(
x
)
__rdiv__
__rdiv__(
x
)
__rfloordiv__
__rfloordiv__(
x
)
__rmatmul__
__rmatmul__(
x
)
__rmod__
__rmod__(
x
)
__rmul__
__rmul__(
x
)
__ror__
__ror__(
x
)
__rpow__
__rpow__(
x
)
__rsub__
__rsub__(
x
)
__rtruediv__
__rtruediv__(
x
)
__rxor__
__rxor__(
x
)
__sub__
__sub__(
y
)
__truediv__
__truediv__(
y
)
__xor__
__xor__(
y
)
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/experimental/dtensor/DVariable