Spec-Zone.ru › TensorFlow 2.9

tf.transpose

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

Транспонирует a, где a — это тензор.

tf.transpose(
    a, perm=None, conjugate=False, name='transpose'
)

Переупорядочивает измерения согласно значению perm.

Измерение i возвращаемого тензора будет соответствовать измерению perm[i] входного тензора. Если perm не указано, оно устанавливается в (n-1...0), где n — ранг входного тензора. Таким образом, по умолчанию эта операция выполняет обычную транспонирование матрицы для двумерных входных тензоров.

Если conjugate — True и a.dtype — это либо complex64 либо complex128, то значения a конъюгируются и транспонируются.

Например:

x = tf.constant([[1, 2, 3], [4, 5, 6]])
tf.transpose(x)
<tf.Tensor: shape=(3, 2), dtype=int32, numpy=
array([[1, 4],
       [2, 5],
       [3, 6]], dtype=int32)>

Аналогично, можно вызвать tf.transpose(x, perm=[1, 0]).

Если x является комплексным, установка conjugate=True даёт сопряжённую транспонирование:

x = tf.constant([[1 + 1j, 2 + 2j, 3 + 3j],
                 [4 + 4j, 5 + 5j, 6 + 6j]])
tf.transpose(x, conjugate=True)
<tf.Tensor: shape=(3, 2), dtype=complex128, numpy=
array([[1.-1.j, 4.-4.j],
       [2.-2.j, 5.-5.j],
       [3.-3.j, 6.-6.j]])>

'perm' полезнее для n-мерных тензоров, где n > 2:

x = tf.constant([[[ 1,  2,  3],
                  [ 4,  5,  6]],
                 [[ 7,  8,  9],
                  [10, 11, 12]]])

Как и выше, простой вызов tf.transpose будет по умолчанию perm=[2,1,0].

Для транспонирования матриц в измерении-0 (например, когда вы транспонируете матрицы, где 0 — измерение пакетности), вы бы установили perm=[0,2,1].

tf.transpose(x, perm=[0, 2, 1])
<tf.Tensor: shape=(2, 3, 2), dtype=int32, numpy=
array([[[ 1,  4],
        [ 2,  5],
        [ 3,  6]],
        [[ 7, 10],
        [ 8, 11],
        [ 9, 12]]], dtype=int32)>
Примечание: Это имеет сокращенную форму linalg.matrix_transpose):
Аргументы
a А Tensor.
perm Перестановка измерений a. Это должен быть вектор.
conjugate Необязательный bool. Установка его в True математически эквивалентна tf.math.conj(tf.transpose(input)).
name Имя операции (необязательно).
Возвращаемое значение
Транспонированный Tensor.

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

В numpy транспонирование — это эффективные операции с памятью за постоянное время, так как они просто возвращают новый вид тех же данных с изменёнными strides.

TensorFlow не поддерживает шаги, поэтому transpose возвращает новый тензор с переупорядоченными элементами.

© 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/versions/r2.9/api_docs/python/tf/transpose

Spec-Zone.ru

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