轉置 a
,其中 a
是張量。
用法
tf.transpose(
a, perm=None, conjugate=False, name='transpose'
)
參數
-
a
一個Tensor
。 -
perm
a
的尺寸排列。這應該是一個向量。 -
conjugate
可選的布爾值。將其設置為True
在數學上等同於 tf.math.conj(tf.transpose(input))。 -
name
操作的名稱(可選)。
返回
-
轉置的
Tensor
。
根據 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 > 2 的 n 維張量更有用:
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
):
numpy 兼容性
在 numpy
中,轉置是節省內存的常數時間操作,因為它們隻是返回具有調整後的相同數據的新視圖 strides
。
TensorFlow 不支持跨步,因此 transpose
返回一個新張量,其中項目已置換。
相關用法
- Python tf.train.Coordinator.stop_on_exception用法及代碼示例
- Python tf.train.ExponentialMovingAverage用法及代碼示例
- Python tf.train.Checkpoint.restore用法及代碼示例
- Python tf.train.Checkpoint.read用法及代碼示例
- Python tf.train.CheckpointOptions用法及代碼示例
- Python tf.train.list_variables用法及代碼示例
- Python tf.train.ClusterSpec用法及代碼示例
- Python tf.train.Checkpoint.save用法及代碼示例
- Python tf.train.Checkpoint.write用法及代碼示例
- Python tf.train.Coordinator用法及代碼示例
- Python tf.train.CheckpointManager用法及代碼示例
- Python tf.train.Checkpoint用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.transpose。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。