torch.diag_embed#
- torch.diag_embed(input, offset=0, dim1=-2, dim2=-1) Tensor #
创建以
input
填充指定二维平面(由dim1
和dim2
指定)的对角线的张量。为了方便创建批量的对角矩阵,默认选择返回张量的最后两个维度形成的二维平面。参数
offset
控制要考虑的对角线如果
offset
= 0,则为主对角线。如果
offset
> 0,则位于主对角线之上。如果
offset
< 0,则位于主对角线之下。
新矩阵的尺寸将根据输入最后一个维度的尺寸来计算,以使指定的对角线具有该尺寸。注意,对于
offset
不等于 的情况,dim1
和dim2
的顺序很重要。交换它们相当于改变offset
的符号。将此函数的输出与相同的参数一起应用
torch.diagonal()
会得到与输入相同的矩阵。但是,torch.diagonal()
具有不同的默认维度,因此需要显式指定这些维度。- 参数
示例
>>> a = torch.randn(2, 3) >>> torch.diag_embed(a) tensor([[[ 1.5410, 0.0000, 0.0000], [ 0.0000, -0.2934, 0.0000], [ 0.0000, 0.0000, -2.1788]], [[ 0.5684, 0.0000, 0.0000], [ 0.0000, -1.0845, 0.0000], [ 0.0000, 0.0000, -1.3986]]]) >>> torch.diag_embed(a, offset=1, dim1=0, dim2=2) tensor([[[ 0.0000, 1.5410, 0.0000, 0.0000], [ 0.0000, 0.5684, 0.0000, 0.0000]], [[ 0.0000, 0.0000, -0.2934, 0.0000], [ 0.0000, 0.0000, -1.0845, 0.0000]], [[ 0.0000, 0.0000, 0.0000, -2.1788], [ 0.0000, 0.0000, 0.0000, -1.3986]], [[ 0.0000, 0.0000, 0.0000, 0.0000], [ 0.0000, 0.0000, 0.0000, 0.0000]]])