tf.transpose
Транспонирует 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/api_docs/python/tf/transpose