torch.diagonal¶
- torch.diagonal(input, offset=0, dim1=0, dim2=1) Tensor ¶
返回
input
的局部视图,其中相对于dim1
和dim2
的对角线元素作为形状末尾的一个维度附加。参数
offset
控制考虑哪个对角线:如果
offset
等于 0,则是主对角线。如果
offset
大于 0,则位于主对角线上方。如果
offset
小于 0,则位于主对角线下方。
将
torch.diag_embed()
应用于此函数的相同参数的输出,得到一个对角线矩阵,其对角线元素为输入值。然而,torch.diag_embed()
具有不同的默认维度,因此需要显式指定这些维度。- 参数:
输入(张量)- 输入张量。必须至少是二维的。
偏移量(整数,可选)- 考虑哪个对角线。默认:0(主对角线)。
dim1(整数,可选)- 按照哪个维度取对角线。默认:0。
dim2(整数,可选)- 按照哪个维度取对角线。默认:1。
注意
要获取一个批处理对角矩阵,请传入 dim1=-2, dim2=-1。
示例:
>>> a = torch.randn(3, 3) >>> a tensor([[-1.0854, 1.1431, -0.1752], [ 0.8536, -0.0905, 0.0360], [ 0.6927, -0.3735, -0.4945]]) >>> torch.diagonal(a) tensor([-1.0854, -0.0905, -0.4945]) >>> torch.diagonal(a, 1) tensor([ 1.1431, 0.0360]) >>> b = torch.randn(2, 5) >>> b tensor([[-1.7948, -1.2731, -0.3181, 2.0200, -1.6745], [ 1.8262, -1.5049, 0.4114, 1.0704, -1.2607]]) >>> torch.diagonal(b, 1, 1, 0) tensor([1.8262]) >>> x = torch.randn(2, 5, 4, 2) >>> torch.diagonal(x, offset=-1, dim1=1, dim2=2) tensor([[[-1.2631, 0.3755, -1.5977, -1.8172], [-1.1065, 1.0401, -0.2235, -0.7938]], [[-1.7325, -0.3081, 0.6166, 0.2335], [ 1.0500, 0.7336, -0.3836, -1.1015]]])