tf.tensordot
| Просмотреть исходный код на GitHub |
Тензорное сокращение a и b по указанным осям и внешнее произведение.
tf.tensordot(
a, b, axes, name=None
)
Tensordot (также известное как тензорное сокращение) суммирует произведение элементов из a и b по указанным индексам a_axes и b_axes. Список a_axes и b_axes задают пары осей для сокращения тензоров. Ось a_axes[i] тензора a должна иметь такую же размерность, как ось b_axes[i] тензора b для всех i в range(0, len(a_axes)). Списки a_axes и b_axes должны иметь одинаковую длину и состоять из уникальных целых чисел, определяющих допустимые оси для каждого тензора. Дополнительно поддерживается внешнее произведение, передавая axes=0.
Эта операция соответствует numpy.tensordot(a, b, axes).
Пример 1: Когда a и b являются матрицами (порядка 2), случай axes = 1 эквивалентен умножению матриц.
Пример 2: Когда a и b являются матрицами (порядка 2), случай axes = [[1], [0]] эквивалентен умножению матриц.
Пример 3: Когда a и b являются матрицами (порядка 2), случай axes=0 даёт внешнее произведение, тензор порядка 4.
Пример 4: Предположим, что \(a_{ijk}\) и \(b_{lmn}\) представляют два тензора порядка 3. Тогда, contract(a, b, [[0], [2]]) это тензор порядка 4 \(c_{jklm}\), чья запись, соответствующая индексам \((j,k,l,m)\), задаётся:
\( c_{jklm} = \sum_i a_{ijk} b_{lmi} \).
В общем случае, order(c) = order(a) + order(b) - 2*len(axes[0]).
| Аргументы | |
|---|---|
a | Tensor типа float32 или float64. |
b | Tensor с тем же типом, что и a. |
axes | Либо скаляр N, либо список или int32 Tensor формы [2, k]. Если axes — скаляр, суммирование выполняется по последним N осям a и первым N осям b в порядке. Если axes — список или Tensor, первая и вторая строки содержат множество уникальных целых чисел, задающих оси, по которым вычисляется сокращение, для a и b, соответственно. Число осей для a и b должно быть равным. Если axes=0, вычисляется внешнее произведение между a и b. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A Tensor с тем же типом, что и a. |
| Исключения | |
|---|---|
ValueError | Если формы a, b, и axes несовместимы. |
IndexError | Если значения в axes превышают ранг соответствующего тензора. |
© 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.4/api_docs/python/tf/tensordot