Einsum

публичный финальный класс Einsum

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

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

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

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

Операции применяются к входу(ам) в соответствии со следующими правилами:

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

(б) Сокращение: оси, соответствующие меткам, появляющимся только в одном входном индексе, но не в выходном индексе, суммируются до сжатия тензора. Например, в уравнении 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 (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html).

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

Публичные методы

Выход <Т>
какВывод ()
Возвращает символический дескриптор тензора.
статический <T> Эйнсум <T>
create (область области действия , входные данные Iterable< Operand <T>>, строковое уравнение)
Фабричный метод для создания класса, обертывающего новую операцию Einsum.
Выход <Т>
выход ()
Выходной тензор, форма которого зависит от «уравнения».

Унаследованные методы

Публичные методы

публичный вывод <T> asOutput ()

Возвращает символический дескриптор тензора.

Входные данные для операций TensorFlow являются выходными данными другой операции TensorFlow. Этот метод используется для получения символического дескриптора, который представляет собой вычисление входных данных.

public static Einsum <T> create (область области действия , входные данные Iterable< Operand <T>>, строковое уравнение)

Фабричный метод для создания класса, обертывающего новую операцию Einsum.

Параметры
объем текущий объем
входы Список из 1 или 2 тензоров.
уравнение Строка, описывающая операцию суммирования Эйнштейна; в формате np.einsum.
Возврат
  • новый экземпляр Einsum

публичный вывод <T> вывод ()

Выходной тензор, форма которого зависит от «уравнения».