Spec-Zone.ru › TensorFlow

tf.raw_ops.Einsum

Сжатие тензоров в соответствии с соглашением Эйнштейна о суммировании.

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

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

Подробнее см. в руководстве по миграции.

tf.compat.v1.raw_ops.Einsum

tf.raw_ops.Einsum(
    inputs, equation, name=None
)

Выполняет обобщённое сжатие и сведение тензоров. Для каждого входного тензора должен быть указан соответствующий ему индекс в левой части уравнения, разделённой запятыми. Правая часть уравнения содержит выходной индекс. Входные и выходной индексы должны состоять из нуля или более именованных меток осей и не более чем одного многоточия (...).

Именованные метки осей могут быть любыми отдельными символами, кроме имеющих специальное значение, а именно ,.->. Поведение этой операции не определено, если ей передано некорректно сформированное уравнение. Поскольку проверка выполняется во время построения графа, проверки формата во время выполнения не производятся.

Примечание: Эта операция не предназначена для вызова пользователем; вместо этого следует напрямую вызывать tf.einsum. Это скрытая операция, используемая в tf.einsum.

К входным данным применяются следующие операции:

(a) Обобщённые диагонали: Для входных измерений, соответствующих меткам осей, которые встречаются более одного раза в одном и том же входном индексе, берётся обобщённая диагональ (k-мерная). Например, в уравнении iii->i с входной формой [3, 3, 3] обобщённая диагональ будет состоять из 3 элементов с индексами (0, 0, 0), (1, 1, 1) и (2, 2, 2), образуя тензор формы [3].

(b) Сведение: Оси, соответствующие меткам, встречающимся только в одном входном индексе, но отсутствующим в выходном индексе, суммируются до сжатия тензоров. Например, в уравнении ab,bc->b метки осей a и c являются метками осей сведения.

(c) Пакетные измерения: Оси, соответствующие меткам, присутствующим во всех входных индексах, а также в выходном индексе, образуют пакетные измерения при сжатии тензоров. Безымянные метки осей, соответствующие многоточию (...), также обозначают пакетные измерения. Например, в уравнении для пакетного умножения матриц bij,bjk->bik метка оси b соответствует пакетному измерению.

(d) Сжатие: В случае бинарного einsum оси, соответствующие меткам, встречающимся в двух разных входных данных, но отсутствующим в выходном, сжимаются друг с другом. В уравнении для пакетного умножения матриц (bij,bjk->bik) метка оси, по которой выполняется сжатие, — j.

(e) Разворачивание диагонали: Если выходные индексы содержат повторяющиеся (явно указанные) метки осей, выполняется операция, обратная операции (a). Например, в уравнении i->iii при входной форме [3] выходной тензор формы [3, 3, 3] состоит из нулей, кроме (обобщённой) диагонали, в которую помещаются значения из входного тензора. Примечание: Эта операция не поддерживается в np.einsum или tf.einsum; она предоставлена для вычисления символьного градиента tf.einsum.

Выходные индексы должны содержать только метки, присутствующие как минимум в одном из входных индексов. Кроме того, все измерения, сопоставленные одной и той же метке оси, должны быть равны.

Любые входные и выходные индексы могут содержать не более одного многоточия (...). Эти многоточия сопоставляются измерениям, не соответствующим именованным меткам осей. Если многоточие содержится в двух входных данных, они транслируются согласно стандартным правилам трансляции NumPy.

Транслированные измерения помещаются в соответствующую позицию многоточия в выходном индексе. Если транслированные измерения не пусты, а выходные индексы не содержат многоточия, возникает ошибка InvalidArgument.

Аргументы
inputs Список как минимум из 1 объекта Tensor одного типа. Список из 1 или 2 тензоров.
equation string. Строка, описывающая операцию суммирования Эйнштейна, в формате np.einsum.
name Имя операции (необязательно).
Возвращает
Tensor. Имеет тот же тип, что и inputs.

Совместимость с numpy

Аналогично numpy.einsum.

Сравнение с numpy.einsum:

  • Эта операция поддерживает только унарные и бинарные формы numpy.einsum.
  • Эта операция не поддерживает неявную форму (то есть уравнения без ->).
  • Эта операция также поддерживает повторяющиеся индексы в выходном индексе, которые не поддерживаются в numpy.einsum.

© 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/raw_ops/Einsum

Spec-Zone.ru

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