tf.transpose

2022-09-04 20:57:38 浏览数 (1)

代码语言:javascript复制
tf.transpose(
    a,
    perm=None,
    name='transpose',
    conjugate=False
)

转置a.根据perm来改变尺寸。 返回的张量的维i将对应于输入维perm[i]。如果没有perm,它被设为(n-1…0),其中n是输入张量的秩。因此,默认情况下,这个操作对二维输入张量执行一个常规矩阵转置。如果共轭为真,a,dtype可以是complex64,也可以是complex128,然后对a的值进行共轭和转置。

例:

代码语言:javascript复制
x = tf.constant([[1, 2, 3], [4, 5, 6]])
tf.transpose(x)  # [[1, 4]
                 #  [2, 5]
                 #  [3, 6]]

# Equivalently
tf.transpose(x, perm=[1, 0])  # [[1, 4]
                              #  [2, 5]
                              #  [3, 6]]

# If x is complex, setting conjugate=True gives the conjugate transpose
x = tf.constant([[1   1j, 2   2j, 3   3j],
                 [4   4j, 5   5j, 6   6j]])
tf.transpose(x, conjugate=True)  # [[1 - 1j, 4 - 4j],
                                 #  [2 - 2j, 5 - 5j],
                                 #  [3 - 3j, 6 - 6j]]

# 'perm' is more useful for n-dimensional tensors, for n > 2
x = tf.constant([[[ 1,  2,  3],
                  [ 4,  5,  6]],
                 [[ 7,  8,  9],
                  [10, 11, 12]]])

# Take the transpose of the matrices in dimension-0
# (this common operation has a shorthand `matrix_transpose`)
tf.transpose(x, perm=[0, 2, 1])  # [[[1,  4],
                                 #   [2,  5],
                                 #   [3,  6]],
                                 #  [[7, 10],
                                 #   [8, 11],
                                 #   [9, 12]]]

参数:

  • a: 一个张量
  • perm: A的维数的排列
  • name :操作的名称(可选)
  • conjugate: 可选的布尔值。将其设置为True在数学上等价于tf.conj(tf.transpose(input))

返回值:

  • 转置张量。

Numpy的兼容性

在numpy中,转置是一种内存效率高的常量时间操作,因为它们只是用调整后的步长返回相同数据的新视图。张量流不支持大步,因此转置返回一个新的张量,其中的项被置换。

原链接: https://tensorflow.google.cn/versions/r1.11/api_docs/python/tf/transpose?hl=en

0 人点赞