当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。