tf.Tensor
| Просмотреть исходный код на GitHub |
Представляет один из выходов Operation.
tf.Tensor(
op, value_index, dtype
)
Тензор — это символическая ссылка на один из выходов Operation. Он не содержит значения результата этой операции, а вместо этого предоставляет способ вычисления этих значений в TensorFlow tf.compat.v1.Session.
Этот класс имеет две основные цели:
Тензор можно передать в качестве входного значения для другой
Operation. Это создает соединение потока данных между операциями, что позволяет TensorFlow выполнить всюGraph, представляющую собой вычисление из нескольких этапов.После запуска графа в сессии значение тензора можно вычислить, передав его в
tf.Session.run.t.eval()— это сокращение вызоваtf.compat.v1.get_default_session().run(t).
В следующем примере c, d, и e — это символические объекты Tensor, а result — массив NumPy, который хранит конкретное значение:
# Build a dataflow graph. c = tf.constant([[1.0, 2.0], [3.0, 4.0]]) d = tf.constant([[1.0, 1.0], [0.0, 1.0]]) e = tf.matmul(c, d) # Construct a `Session` to execute the graph. sess = tf.compat.v1.Session() # Execute the graph and store the value that `e` represents in `result`. result = sess.run(e)
| Аргументы | |
|---|---|
op | Operation. Operation вычисляет этот тензор. |
value_index | int. Индекс конечной точки операции, которая производит этот тензор. |
dtype | DType. Тип элементов, хранящихся в этом тензоре. |
| Исключения | |
|---|---|
TypeError | Если операция не является Operation. |
| Атрибуты | |
|---|---|
device | Имя устройства, на котором будет создан этот тензор, или None. |
dtype | Размер элементов в этом тензоре. |
graph | Операция, содержащая этот тензор. |
name | Строковое имя этого тензора. |
op | Операция, которая производит этот тензор в качестве выхода. |
shape | Возвращает тензор, представляющий форму этого тензора. Форма вычисляется с помощью функций вывода формы, зарегистрированных в операции для каждого Вывод формы тензора используется для предоставления информации о форме без запуска графа в сессии. Это может быть использовано для отладки и предоставления ранних сообщений об ошибках. Например: c = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) print(c.shape) ==> TensorShape([Dimension(2), Dimension(3)]) d = tf.constant([[1.0, 0.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0]]) print(d.shape) ==> TensorShape([Dimension(4), Dimension(2)]) # Raises a ValueError, because `c` and `d` do not have compatible # inner dimensions. e = tf.matmul(c, d) f = tf.matmul(c, d, transpose_a=True, transpose_b=True) print(f.shape) ==> TensorShape([Dimension(3), Dimension(4)]) В некоторых случаях вывод формы может содержать неизвестные измерения. Если у вызывающего есть дополнительная информация о значениях этих измерений, |
value_index | Индекс этого тензора в выходных данных его Operation. |
Методы
consumers
consumers()
Возвращает список Operations, которые потребляют этот тензор.
| Возвращает | |
|---|---|
Список Operations. |
eval
eval(
feed_dict=None, session=None
)
Вычисляет этот тензор в Session.
Вызов этого метода выполнит все предыдущие операции, которые производят входные данные, необходимые для операции, которая производит этот тензор.
Примечание: Перед вызовомTensor.eval()его граф должен быть запущен в сессии, и либо должна быть доступна сессия по умолчанию, либоsessionдолжна быть указана явно.
| Аргументы | |
|---|---|
feed_dict | Словарь, сопоставляющий объекты Tensor со значениями для подмены. См. tf.Session.run для описания допустимых значений подмены. |
session | (Необязательно.) Session для вычисления этого тензора. Если не указано, будет использована сессия по умолчанию. |
| Возвращаемое значение | |
|---|---|
| Массив NumPy, соответствующий значению этого тензора. |
experimental_ref
experimental_ref()
Возвращает хешируемый объект-ссылку на этот тензор.
Основное применение этого API — размещение тензоров в множествах/словарях. Мы не можем помещать тензоры в множества/словари, так как tensor.__hash__() больше недоступен начиная с Tensorflow 2.0.
import tensorflow as tf
x = tf.constant(5)
y = tf.constant(10)
z = tf.constant(10)
# The followings will raise an exception starting 2.0
# TypeError: Tensor is unhashable if Tensor equality is enabled.
tensor_set = {x, y, z}
tensor_dict = {x: 'five', y: 'ten', z: 'ten'}
Вместо этого мы можем использовать tensor.experimental_ref().
tensor_set = {x.experimental_ref(),
y.experimental_ref(),
z.experimental_ref()}
print(x.experimental_ref() in tensor_set)
==> True
tensor_dict = {x.experimental_ref(): 'five',
y.experimental_ref(): 'ten',
z.experimental_ref(): 'ten'}
print(tensor_dict[y.experimental_ref()])
==> ten
Кроме того, объект ссылки предоставляет функцию .deref() которая возвращает исходный тензор.
x = tf.constant(5) print(x.experimental_ref().deref()) ==> tf.Tensor(5, shape=(), dtype=int32)
get_shape
get_shape()
Псевдоним для Tensor.shape.
set_shape
set_shape(
shape
)
Обновляет форму этого тензора.
Этот метод можно вызывать несколько раз, и он будет объединять заданную shape с текущей формой этого тензора. Его можно использовать для предоставления дополнительной информации о форме этого тензора, которую нельзя вывести только из графа. Например, это можно использовать для предоставления дополнительной информации о формах изображений:
_, image_data = tf.compat.v1.TFRecordReader(...).read(...) image = tf.image.decode_png(image_data, channels=3) # The height and width dimensions of `image` are data dependent, and # cannot be computed without executing the op. print(image.shape) ==> TensorShape([Dimension(None), Dimension(None), Dimension(3)]) # We know that each image in this dataset is 28 x 28 pixels. image.set_shape([28, 28, 3]) print(image.shape) ==> TensorShape([Dimension(28), Dimension(28), Dimension(3)])
Примечание: Эта форма не проверяется во время выполнения. Установка некорректных форм может привести к несоответствиям между статически известным графом и значением тензоров во время выполнения. Для проверки формы во время выполнения используйте tf.ensure_shape вместо этого.
| Аргументы | |
|---|---|
shape | Представление формы этого тензора, например, кортеж, список или None. |
| Исключения | |
|---|---|
ValueError | Если shape несовместима с текущей формой этого тензора. |
__abs__
__abs__(
x, name=None
)
Вычисляет абсолютное значение тензора.
При заданном тензоре целочисленных или с плавающей точкой значений, эта операция возвращает тензор того же типа, где каждый элемент содержит абсолютное значение соответствующего элемента на входе.
При заданном тензоре x комплексных чисел, эта операция возвращает тензор типа float32 или float64, который является абсолютным значением каждого элемента в x. Все элементы в x должны быть комплексными числами вида \(a + bj\). Абсолютное значение вычисляется как \( \sqrt{a^2 + b^2}\). Например:
x = tf.constant([[-2.25 + 4.75j], [-3.25 + 5.75j]]) tf.abs(x) # [5.25594902, 6.60492229]
| Аргументы | |
|---|---|
x | Тензор или скаляр типа float16, float32, float64, int32, int64, complex64 или complex128. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Тензор или скаляр того же размера, типа и разреженности, что и x, с абсолютными значениями. Обратите внимание, что для complex64 или complex128 ввода возвращаемый Tensor будет типа float32 или float64, соответственно. Если |
__add__
__add__(
x, y
)
Добавляются отправки для строк и add_v2 для всех других типов.
__and__
__and__(
x, y
)
Возвращает значение истинности x И y поэлементно.
Примечание: math.logical_and поддерживает широковещательную передачу. Дополнительную информацию о широковещательной передаче см. здесь
| Аргументы | |
|---|---|
x | A Tensor типа bool. |
y | A Tensor типа bool. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor типа bool. |
__bool__
__bool__()
Метод-заглушка для предотвращения использования тензора как Python bool.
Этот перегруз вызывает TypeError, когда пользователь непреднамеренно использует Tensor как булево значение (чаще всего в операторе if или while), в коде, который не был преобразован AutoGraph. Например:
if tf.constant(True): # Will raise. # ... if tf.constant(5) < tf.constant(7): # Will raise. # ...
| Исключения | |
|---|---|
TypeError. |
__div__
__div__(
x, y
)
Деление двух значений с использованием семантики Python 2.
Используется для Tensor.div.
| Аргументы | |
|---|---|
x | Tensor числитель вещественного числового типа. |
y | Tensor знаменатель вещественного числового типа. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
x / y возвращает частное x и y. |
__eq__
__eq__(
other
)
Сравнивает два тензора поэлементно на равенство.
__floordiv__
__floordiv__(
x, y
)
Делит x / y поэлементно, округляя к ближайшему меньшему целому.
То же самое, что и tf.compat.v1.div(x,y) для целых чисел, но использует tf.floor(tf.compat.v1.div(x,y)) для аргументов с плавающей запятой, чтобы результат всегда был целым числом (возможно, целым числом, представленным как число с плавающей запятой). Этот оператор генерируется операцией целочисленного деления с округлением вниз в Python 3 и в Python 2.7 с from __future__ import division.
x и y должны иметь тот же тип, и результат будет иметь тот же тип.
| Аргументы | |
|---|---|
x | Tensor числитель вещественного числового типа. |
y | Tensor знаменатель вещественного числового типа. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
x / y округляется вниз. |
| Исключения | |
|---|---|
TypeError | Если входные данные являются комплексными. |
__ge__
__ge__(
x, y, name=None
)
Возвращает значение истинности (x >= y) поэлементно.
Примечание: math.greater_equal поддерживает широковещательную передачу. Дополнительную информацию о широковещательной передаче см. здесь
| Аргументы | |
|---|---|
x | A Tensor. Должен быть одним из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Название операции (необязательно). |
| Возвращает | |
|---|---|
A Tensor типа bool. |
__getitem__
__getitem__(
tensor, slice_spec, var=None
)
Перегрузка для Tensor.getitem.
Данная операция извлекает указанный фрагмент из тензора. Нотация похожа на NumPy, но в настоящее время поддерживается только базовая индексация. Это означает, что использование нескалярного тензора в качестве входного значения в настоящее время недопустимо.
Некоторые полезные примеры:
# Strip leading and trailing 2 elements foo = tf.constant([1,2,3,4,5,6]) print(foo[2:-2].eval()) # => [3,4] # Skip every other row and reverse the order of the columns foo = tf.constant([[1,2,3], [4,5,6], [7,8,9]]) print(foo[::2,::-1].eval()) # => [[3,2,1], [9,8,7]] # Use scalar tensors as indices on both dimensions print(foo[tf.constant(0), tf.constant(2)].eval()) # => 3 # Insert another dimension foo = tf.constant([[1,2,3], [4,5,6], [7,8,9]]) print(foo[tf.newaxis, :, :].eval()) # => [[[1,2,3], [4,5,6], [7,8,9]]] print(foo[:, tf.newaxis, :].eval()) # => [[[1,2,3]], [[4,5,6]], [[7,8,9]]] print(foo[:, :, tf.newaxis].eval()) # => [[[1],[2],[3]], [[4],[5],[6]], [[7],[8],[9]]] # Ellipses (3 equivalent operations) foo = tf.constant([[1,2,3], [4,5,6], [7,8,9]]) print(foo[tf.newaxis, :, :].eval()) # => [[[1,2,3], [4,5,6], [7,8,9]]] print(foo[tf.newaxis, ...].eval()) # => [[[1,2,3], [4,5,6], [7,8,9]]] print(foo[tf.newaxis].eval()) # => [[[1,2,3], [4,5,6], [7,8,9]]] # Masks foo = tf.constant([[1,2,3], [4,5,6], [7,8,9]]) print(foo[foo > 2].eval()) # => [3, 4, 5, 6, 7, 8, 9]
Примечания:
-
tf.newaxisэквивалентенNoneв NumPy. - Неявный эллипс помещается в конце
slice_spec - Расширенная индексация NumPy в настоящее время не поддерживается.
| Аргументы | |
|---|---|
tensor | Объект ops.Tensor. |
slice_spec | Аргументы Tensor.getitem. |
var | В случае присваивания срезкой, объект Variable для среза (т.е. тензор — это только для чтения вид этого объекта переменной). |
| Возвращает | |
|---|---|
| Соответствующий срез "tensor", основанный на "slice_spec". |
| Возможные исключения | |
|---|---|
ValueError | Если диапазон среза имеет отрицательный размер. |
TypeError | Если индексы среза не являются int, слайсом, эллипсом, tf.newaxis или скалярными тензорами int32/int64. |
__gt__
__gt__(
x, y, name=None
)
Возвращает логическое значение (x > y) поэлементно.
Примечание: math.greater поддерживает векторизацию. Подробнее о векторизации можно узнать здесь
| Аргументы | |
|---|---|
x | A Tensor. Должен быть одним из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Название операции (необязательно). |
| Возвращает | |
|---|---|
A Tensor типа bool. |
__invert__
__invert__(
x, name=None
)
Возвращает логическое отрицание x поэлементно.
| Аргументы | |
|---|---|
x | A Tensor типа bool. |
name | Название операции (необязательно). |
| Возвращает | |
|---|---|
A Tensor типа bool. |
__iter__
__iter__()
__le__
__le__(
x, y, name=None
)
Возвращает логическое значение (x <= y) поэлементно.
Примечание: math.less_equal поддерживает вещание. Подробнее о вещании здесь
| Аргументы | |
|---|---|
x | A Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor типа bool. |
__len__
__len__()
__lt__
__lt__(
x, y, name=None
)
Возвращает значение истинности (x < y) поэлементно.
Примечание: math.less поддерживает вещание. Подробнее о вещании здесь
| Аргументы | |
|---|---|
x | A Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor типа bool. |
__matmul__
__matmul__(
x, y
)
Умножает матрицу a на матрицу b, получая a * b.
Вводные данные, после любых транспонирований, должны быть тензорами ранга >= 2, где внутренние 2 измерения определяют допустимые аргументы матричного умножения, а любые дальнейшие внешние измерения совпадают.
Обе матрицы должны быть одного и того же типа. Поддерживаемые типы: float16, float32, float64, int32, complex64, complex128.
Любая матрица может быть транспонирована или сопряжена (сопряжена и транспонирована) на лету, установив соответствующий флаг в True. По умолчанию они False.
Если одна или обе матрицы содержат много нулей, можно использовать более эффективный алгоритм умножения, установив соответствующий флаг a_is_sparse или b_is_sparse в True. По умолчанию они False . Эта оптимизация доступна только для обычных матриц (тензоры ранга 2) с типами данных bfloat16 или float32.
Например:
# 2-D tensor `a`
# [[1, 2, 3],
# [4, 5, 6]]
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])
# 2-D tensor `b`
# [[ 7, 8],
# [ 9, 10],
# [11, 12]]
b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2])
# `a` * `b`
# [[ 58, 64],
# [139, 154]]
c = tf.matmul(a, b)
# 3-D tensor `a`
# [[[ 1, 2, 3],
# [ 4, 5, 6]],
# [[ 7, 8, 9],
# [10, 11, 12]]]
a = tf.constant(np.arange(1, 13, dtype=np.int32),
shape=[2, 2, 3])
# 3-D tensor `b`
# [[[13, 14],
# [15, 16],
# [17, 18]],
# [[19, 20],
# [21, 22],
# [23, 24]]]
b = tf.constant(np.arange(13, 25, dtype=np.int32),
shape=[2, 3, 2])
# `a` * `b`
# [[[ 94, 100],
# [229, 244]],
# [[508, 532],
# [697, 730]]]
c = tf.matmul(a, b)
# Since python >= 3.5 the @ operator is supported (see PEP 465).
# In TensorFlow, it simply calls the `tf.matmul()` function, so the
# following lines are equivalent:
d = a @ b @ [[10.], [11.]]
d = tf.matmul(tf.matmul(a, b), [[10.], [11.]])
| Аргументы | |
|---|---|
a | Tensor типа float16, float32, float64, int32, complex64, complex128 и ранга > 1. |
b | Tensor с тем же типом и рангом, что и a. |
transpose_a | Если True, то a транспонируется перед умножением. |
transpose_b | Если True, то b транспонируется перед умножением. |
adjoint_a | Если True, то a сопрягается и транспонируется перед умножением. |
adjoint_b | Если True, то b сопрягается и транспонируется перед умножением. |
a_is_sparse | Если True, то a обрабатывается как разреженная матрица. |
b_is_sparse | Если True, то b обрабатывается как разреженная матрица. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Объект Tensor того же типа, что и a и b, где каждая внутренняя матрица является произведением соответствующих матриц в a и b, например, если все атрибуты транспонирования или сопряжения False:
| |
Note | Это матричное произведение, а не поэлементное произведение. |
| Исключения | |
|---|---|
ValueError | Если transpose_a и adjoint_a, или transpose_b и adjoint_b оба установлены в True. |
__mod__
__mod__(
x, y
)
Возвращает остаток от деления по модулю. Когда x < 0 или y < 0 истинно,
это соответствует семантике Python, в том, что результат здесь согласуется с целочисленным делением по модулю. Например, floor(x / y) * y + mod(x, y) = x.
Примечание: math.floormod поддерживает векторизацию. Подробнее о векторизации здесь
| Аргументы | |
|---|---|
x | A Tensor. Должен быть одного из следующих типов: int32, int64, bfloat16, half, float32, float64. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor. Имеет тот же тип, что и x. |
__mul__
__mul__(
x, y
)
Выполняет поэлементное умножение для "DenseDense" и "DenseSparse".
__ne__
__ne__(
other
)
Сравнивает два тензора поэлементно на равенство.
__neg__
__neg__(
x, name=None
)
Вычисляет численное отрицание поэлементно.
То есть, \(y = -x\).
| Аргументы | |
|---|---|
x | A Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, int32, int64, complex64, complex128. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
A Tensor. Имеет тот же тип, что и x. Если |
__nonzero__
__nonzero__()
Метод-заглушка, чтобы предотвратить использование тензора как Python bool.
Это аналог функции __bool__() из Python 2.x.
| Возбуждает | |
|---|---|
TypeError. |
__or__
__or__(
x, y
)
Возвращает логическое ИЛИ x и y поэлементно.
Примечание: math.logical_or поддерживает трансляцию. Подробнее о трансляции здесь
| Аргументы | |
|---|---|
x | A Tensor типа bool. |
y | A Tensor типа bool. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
A Tensor типа bool. |
__pow__
__pow__(
x, y
)
Вычисляет степень одного значения по отношению к другому.
При заданном тензоре x и тензоре y, эта операция вычисляет \(x^y\) для соответствующих элементов в x и y. Например:
x = tf.constant([[2, 2], [3, 3]]) y = tf.constant([[8, 16], [2, 3]]) tf.pow(x, y) # [[256, 65536], [9, 27]]
| Аргументы | |
|---|---|
x | A Tensor типа float16, float32, float64, int32, int64, complex64, или complex128. |
y | A Tensor типа float16, float32, float64, int32, int64, complex64, или complex128. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
A Tensor. |
__radd__
__radd__(
y, x
)
Перенаправляет вызов к add для строк и add_v2 для всех остальных типов.
__rand__
__rand__(
y, x
)
Возвращает логическое И x и y поэлементно.
Примечание: math.logical_and поддерживает трансляцию. Подробнее о трансляции здесь
| Аргументы | |
|---|---|
x | A Tensor типа bool. |
y | A Tensor типа bool. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
A Tensor типа bool. |
__rdiv__
__rdiv__(
y, x
)
Деление двух значений с использованием семантики Python 2.
Используется для Tensor.div.
| Аргументы | |
|---|---|
x | Tensor числитель вещественного числового типа. |
y | Tensor знаменатель вещественного числового типа. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
x / y возвращает частное от деления x на y. |
__rfloordiv__
__rfloordiv__(
y, x
)
Делит x / y поэлементно, округляя к ближайшему меньшему целому числу.
То же самое, что и tf.compat.v1.div(x,y) для целых чисел, но использует tf.floor(tf.compat.v1.div(x,y)) для чисел с плавающей точкой, чтобы результат всегда был целым числом (хотя, возможно, представленным как число с плавающей точкой). Данная операция генерируется операцией целочисленного деления с округлением вниз в Python 3 и в Python 2.7 с from __future__ import division.
x и y должны иметь одинаковый тип, и результат также будет иметь тот же тип.
| Аргументы | |
|---|---|
x | Tensor числитель вещественного числового типа. |
y | Tensor знаменатель вещественного числового типа. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
x / y округлено вниз. |
| Исключения | |
|---|---|
TypeError | Если входные данные комплексные. |
__rmatmul__
__rmatmul__(
y, x
)
Умножает матрицу a на матрицу b, получая a * b.
Вводные данные должны, после любых транспонирований, быть тензорами ранга >= 2, где внутренние 2 измерения определяют допустимые аргументы матричного умножения, а любые дополнительные внешние измерения совпадают.
Обе матрицы должны быть одного типа. Поддерживаемые типы: float16, float32, float64, int32, complex64, complex128.
Любую матрицу можно транспонировать или сопрячь-транспонировать (сопрячь и транспонировать) на лету, установив соответствующий флаг в True. По умолчанию эти значения False.
Если одна или обе матрицы содержат много нулей, для более эффективного алгоритма умножения можно установить соответствующий флаг a_is_sparse или b_is_sparse в True. По умолчанию эти значения False . Данная оптимизация доступна только для обычных матриц (тензоров ранга 2) с типами данных bfloat16 или float32.
Например:
# 2-D tensor `a`
# [[1, 2, 3],
# [4, 5, 6]]
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])
# 2-D tensor `b`
# [[ 7, 8],
# [ 9, 10],
# [11, 12]]
b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2])
# `a` * `b`
# [[ 58, 64],
# [139, 154]]
c = tf.matmul(a, b)
# 3-D tensor `a`
# [[[ 1, 2, 3],
# [ 4, 5, 6]],
# [[ 7, 8, 9],
# [10, 11, 12]]]
a = tf.constant(np.arange(1, 13, dtype=np.int32),
shape=[2, 2, 3])
# 3-D tensor `b`
# [[[13, 14],
# [15, 16],
# [17, 18]],
# [[19, 20],
# [21, 22],
# [23, 24]]]
b = tf.constant(np.arange(13, 25, dtype=np.int32),
shape=[2, 3, 2])
# `a` * `b`
# [[[ 94, 100],
# [229, 244]],
# [[508, 532],
# [697, 730]]]
c = tf.matmul(a, b)
# Since python >= 3.5 the @ operator is supported (see PEP 465).
# In TensorFlow, it simply calls the `tf.matmul()` function, so the
# following lines are equivalent:
d = a @ b @ [[10.], [11.]]
d = tf.matmul(tf.matmul(a, b), [[10.], [11.]])
| Аргументы | |
|---|---|
a | Tensor типа float16, float32, float64, int32, complex64, complex128 и ранга > 1. |
b | Tensor с тем же типом и рангом, что и a. |
transpose_a | Если True, a транспонируется перед умножением. |
transpose_b | Если True, b транспонируется перед умножением. |
adjoint_a | Если True, a сопрягается и транспонируется перед умножением. |
adjoint_b | Если True, b сопрягается и транспонируется перед умножением. |
a_is_sparse | Если True, a обрабатывается как разреженная матрица. |
b_is_sparse | Если True, b обрабатывается как разреженная матрица. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Матрица того же типа, что и a и b, где каждая внутренняя матрица является произведением соответствующих матриц в a и b, например, если все атрибуты транспонирования или сопряжения равны False:
| |
Note | Это произведение матриц, а не поэлементное произведение. |
| Исключения | |
|---|---|
ValueError | Если transpose_a и adjoint_a, или transpose_b и adjoint_b оба установлены в True. |
__rmod__
__rmod__(
y, x
)
Возвращает остаток от деления по элементам. Когда x < 0 или y < 0 истинно, это соответствует семантике Python, в том смысле, что результат здесь согласуется с округлением в меньшую сторону. Например, floor(x / y) * y + mod(x, y) = x.
Примечание: math.floormod поддерживает вещание. Подробнее о вещании здесь
| Аргументы | |
|---|---|
x | A Tensor. Должен быть одним из следующих типов: int32, int64, bfloat16, half, float32, float64. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor. Имеет тот же тип, что и x. |
__rmul__
__rmul__(
y, x
)
Выполняет поэлементное умножение для "DenseDense" и "DenseSparse".
__ror__
__ror__(
y, x
)
Возвращает логическое ИЛИ по элементам x и y.
Примечание: math.logical_or поддерживает вещание. Подробнее о вещании здесь
| Аргументы | |
|---|---|
x | A Tensor типа bool. |
y | A Tensor типа bool. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor типа bool. |
__rpow__
__rpow__(
y, x
)
Вычисляет степень одного значения по другому.
Даны тензор x и тензор y, эта операция вычисляет \(x^y\) для соответствующих элементов в x и y. Например:
x = tf.constant([[2, 2], [3, 3]]) y = tf.constant([[8, 16], [2, 3]]) tf.pow(x, y) # [[256, 65536], [9, 27]]
| Аргументы | |
|---|---|
x | A Tensor типа float16, float32, float64, int32, int64, complex64, или complex128. |
y | A Tensor типа float16, float32, float64, int32, int64, complex64, или complex128. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor. |
__rsub__
__rsub__(
y, x
)
Возвращает x - y поэлементно.
Примечание: Subtract поддерживает вещание. Подробнее о вещании здесь
| Аргументы | |
|---|---|
x | A Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor. Имеет тот же тип, что и x. |
__rtruediv__
__rtruediv__(
y, x
)
__rxor__
__rxor__(
y, x
)
Логическая функция XOR.
x ^ y = (x | y) & ~(x & y)
Вводятся тензоры, и если тензоры содержат более одного элемента, вычисляется побитовое логическое XOR.
Использование:
x = tf.constant([False, False, True, True], dtype = tf.bool) y = tf.constant([False, True, False, True], dtype = tf.bool) z = tf.logical_xor(x, y, name="LogicalXor") # here z = [False True True False]
| Аргументы | |
|---|---|
x | A Tensor типа bool. |
y | A Tensor типа bool. |
| Возвращаемое значение | |
|---|---|
A Tensor типа bool с таким же размером, как x или y. |
__sub__
__sub__(
x, y
)
Возвращает x - y поэлементно.
Примечание: Subtract поддерживает вещание. Подробнее о вещании здесь
| Аргументы | |
|---|---|
x | A Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor. Имеет тот же тип, что и x. |
__truediv__
__truediv__(
x, y
)
__xor__
__xor__(
x, y
)
Логическая функция XOR.
x ^ y = (x | y) & ~(x & y)
Вводятся тензоры, и если тензоры содержат более одного элемента, вычисляется побитовое логическое XOR.
Использование:
x = tf.constant([False, False, True, True], dtype = tf.bool) y = tf.constant([False, True, False, True], dtype = tf.bool) z = tf.logical_xor(x, y, name="LogicalXor") # here z = [False True True False]
| Аргументы | |
|---|---|
x | A Tensor типа bool. |
y | A Tensor типа bool. |
| Возвращаемое значение | |
|---|---|
| Значение типа bool с размером, совпадающим с размером x или y. |
Переменные класса
-
OVERLOADABLE_OPERATORS
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/Tensor