當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.transpose用法及代碼示例


轉置 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.dtypecomplex64complex128 那麽 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 返回一個新張量,其中項目已置換。

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.transpose。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。