Spec-Zone.ru › TensorFlow 2.3

tf.einsum

Просмотреть исходный код на GitHub

Сжатие тензора по указанным индексам и внешнее произведение.

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

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

tf.linalg.einsum

Псевдонимы совместимости для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.einsum, tf.compat.v1.linalg.einsum

tf.einsum(
    equation, *inputs, **kwargs
)

Einsum позволяет определять тензоры, определяя их вычисление по элементам. Это вычисление определяется equation, сокращённой формой, основанной на суммировании по Эйнштейну. Например, рассмотрим умножение двух матриц A и B для образования матрицы C. Элементы C задаются следующим образом:

C[i,k] = sum_j A[i,j] * B[j,k]

Соответствующее equation выглядит следующим образом:

ij,jk->ik

В общем случае, чтобы преобразовать уравнение по элементам в строку equation, используйте следующую процедуру (промежуточные строки для примера умножения матриц указаны в скобках):

  1. удалите имена переменных, скобки и запятые, (ik = sum_j ij * jk)
  2. замените "*" на ",", (ik = sum_j ij , jk)
  3. удалите знаки суммирования, и (ik = ij, jk)
  4. переместите результат вправо, заменив "=" на "->". (ij,jk->ik)

Многие общие операции могут быть выражены таким образом. Например:

# Matrix multiplication
einsum('ij,jk->ik', m0, m1)  # output[i,k] = sum_j m0[i,j] * m1[j, k]

# Dot product
einsum('i,i->', u, v)  # output = sum_i u[i]*v[i]

# Outer product
einsum('i,j->ij', u, v)  # output[i,j] = u[i]*v[j]

# Transpose
einsum('ij->ji', m)  # output[j,i] = m[i,j]

# Trace
einsum('ii', m)  # output[j,i] = trace(m) = sum_i m[i, i]

# Batch matrix multiplication
einsum('aij,ajk->aik', s, t)  # out[a,i,k] = sum_j s[a,i,j] * t[a, j, k]

Для включения и управления вещанием используйте эллипсис. Например, для выполнения пакетного умножения матриц с вещанием по пакетным измерениям в стиле NumPy используйте:

einsum('...ij,...jk->...ik', u, v)
Аргументы
equation строку, описывающую сжатие, в том же формате, что и numpy.einsum.
*inputs входные данные для сжатия (каждый из которых является тензором), формы которых должны соответствовать equation.
**kwargs
  • optimize: стратегия оптимизации для поиска пути сжатия с использованием opt_einsum. Должно быть 'greedy', 'optimal', 'branch-2', 'branch-all' или 'auto'. (необязательно, по умолчанию: 'greedy').
  • name: имя операции (необязательно).
Возвращаемые значения
Результат сжатия Tensor, форма которого определяется equation.
Исключения
ValueError Если
  • формат equation неверный,
  • количество входных данных или их формы не соответствуют equation.

© 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/r2.3/api_docs/python/tf/einsum

Spec-Zone.ru

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