Spec-Zone.ru › TensorFlow

tf.keras.ops.einsum

Вычисляет операнды согласно соглашению о суммировании Эйнштейна.

Просмотреть псевдонимы

Основные псевдонимы

tf.keras.ops.numpy.einsum

tf.keras.ops.einsum(
    subscripts, *operands
)
Аргументы
subscripts Задает индексы суммирования в виде списка меток индексов, разделенных запятыми. Если не указан явный маркер -> и метки индексов точной выходной формы, выполняется неявное вычисление (классическое суммирование Эйнштейна).
operands Операнды, для которых вычисляется сумма Эйнштейна.
Возвращаемое значение
Результат вычисления согласно соглашению о суммировании Эйнштейна.

Пример:

from keras.src import ops
a = ops.arange(25).reshape(5, 5)
b = ops.arange(5)
c = ops.arange(6).reshape(2, 3)

След матрицы:

ops.einsum("ii", a)
60
ops.einsum(a, [0, 0])
60
ops.trace(a)
60

Извлечение диагонали:

ops.einsum("ii -> i", a)
array([ 0,  6, 12, 18, 24])
ops.einsum(a, [0, 0], [0])
array([ 0,  6, 12, 18, 24])
ops.diag(a)
array([ 0,  6, 12, 18, 24])

Суммирование по оси:

ops.einsum("ij -> i", a)
array([ 10,  35,  60,  85, 110])
ops.einsum(a, [0, 1], [0])
array([ 10,  35,  60,  85, 110])
ops.sum(a, axis=1)
array([ 10,  35,  60,  85, 110])

Для тензоров большей размерности суммирование по одной оси можно выполнить с помощью многоточия:

ops.einsum("...j -> ...", a)
array([ 10,  35,  60,  85, 110])
np.einsum(a, [..., 1], [...])
array([ 10,  35,  60,  85, 110])

Вычисление транспонирования матрицы или изменение порядка любого количества осей:

ops.einsum("ji", c)
array([[0, 3],
       [1, 4],
       [2, 5]])
ops.einsum("ij -> ji", c)
array([[0, 3],
       [1, 4],
       [2, 5]])
ops.einsum(c, [1, 0])
array([[0, 3],
       [1, 4],
       [2, 5]])
ops.transpose(c)
array([[0, 3],
       [1, 4],
       [2, 5]])

Умножение матрицы на вектор:

ops.einsum("ij, j", a, b)
array([ 30,  80, 130, 180, 230])
ops.einsum(a, [0, 1], b, [1])
array([ 30,  80, 130, 180, 230])
ops.einsum("...j, j", a, b)
array([ 30,  80, 130, 180, 230])

© 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/keras/ops/einsum

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API