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