What does the tensor’s “H”,“T” attributes mean? - PyTorch Forums
torch.Tensor — PyTorch 2.1 documentation
在torch中中,Tensor.T
表示张量(或矩阵)的转置(Transpose)。转置是一种操作,它将矩阵的行和列互换。在tensor中,这可以通过 .T
属性来实现。
例如,如果有一个二维数组(矩阵),可以使用 .T
来获取其转置:
import torch
# 创建一个矩阵
matrix = torch.tensor([[1, 2, 3],
[4, 5, 6]])
# 获取矩阵的转置
transposed_matrix = matrix.T
print("原始矩阵:")
print(matrix)
print("\n转置矩阵:")
print(transposed_matrix)
输出结果为:
原始矩阵:
[[1 2 3]
[4 5 6]]
转置矩阵:
[[1 4]
[2 5]
[3 6]]
在这个例子中,矩阵 matrix
的转置是一个新的矩阵 transposed_matrix
,其中行变成了列,列变成了行。
需要注意的是,对于张量(多维数组),.T
将作用于所有的维度,让所有维度从新来一遍
比如一个张量形状是(1,2,3,4) 转换后得到(4,3,2,1)形状的张量
代码举例如下:
import torch
# 创建一个三维数组
tensor = torch.tensor([[[1, 2],[3, 4],[5, 6]]]) #形状(1,3,2 )
# 获取数组的转置
transposed_tensor = tensor.T #形状是(2,3,1)
print("原始数组:")
print(tensor)
print("\n转置数组:")
print(transposed_tensor)
输出结果为:
tensor([[[1],
[3],
[5]],
[[2],
[4],
[6]]])
在这个例子中,.T
将最后两个维度进行了交换。
mT和T的区别在于
mT只对最后两维度进行转置
比如有一个张量形状是(1,2,3,4) 则mT为(1,2,4,3) 如果T为(4,3,2,1)
.H
通常用于获取矩阵的共轭转置(conjugate transpose)。对于复数矩阵,共轭转置是将矩阵的转置并将每个元素取共轭的操作。
这是一个例子:
import torch
# 创建一个复数矩阵
matrix = torch.tensor([[1 + 2j, 3 - 4j],
[5 + 6j, 7 - 8j]])
# 获取共轭转置
conjugate_transpose_matrix = matrix.H
print("原始矩阵:")
print(matrix)
print("\n共轭转置矩阵:")
print(conjugate_transpose_matrix)
输出结果为:
原始矩阵:
[[1.+2.j 3.-4.j]
[5.+6.j 7.-8.j]]
共轭转置矩阵:
[[1.-2.j 5.-6.j]
[3.+4.j 7.+8.j]]
在这个例子中,.H
操作将矩阵的转置并将每个元素取共轭,得到了共轭转置矩阵。
需要注意的是,如果矩阵中的元素都是实数,.H
的效果与 .T
相同,即只进行转置而不进行共轭操作。共轭转置主要用于处理复数矩阵。
mH和H的区别在于
mH只对最后两维度进行转置
比如有一个张量形状是(1,2,3,4) 则mH为(1,2,4,3) 如果H为(4,3,2,1)