Diag_embed
Source:R/gen-namespace-docs.R
, R/gen-namespace-examples.R
, R/gen-namespace.R
torch_diag_embed.Rd
Diag_embed
Arguments
- self
(Tensor) the input tensor. Must be at least 1-dimensional.
- offset
(int, optional) which diagonal to consider. Default: 0 (main diagonal).
- dim1
(int, optional) first dimension with respect to which to take diagonal. Default: -2.
- dim2
(int, optional) second dimension with respect to which to take diagonal. Default: -1.
diag_embed(input, offset=0, dim1=-2, dim2=-1) -> Tensor
Creates a tensor whose diagonals of certain 2D planes (specified by
dim1
and dim2
) are filled by input
.
To facilitate creating batched diagonal matrices, the 2D planes formed by
the last two dimensions of the returned tensor are chosen by default.
The argument offset
controls which diagonal to consider:
If
offset
= 0, it is the main diagonal.If
offset
> 0, it is above the main diagonal.If
offset
< 0, it is below the main diagonal.
The size of the new matrix will be calculated to make the specified diagonal
of the size of the last input dimension.
Note that for offset
other than \(0\), the order of dim1
and dim2
matters. Exchanging them is equivalent to changing the
sign of offset
.
Applying torch_diagonal
to the output of this function with
the same arguments yields a matrix identical to input. However,
torch_diagonal
has different default dimensions, so those
need to be explicitly specified.
Examples
if (torch_is_installed()) {
a = torch_randn(c(2, 3))
torch_diag_embed(a)
torch_diag_embed(a, offset=1, dim1=1, dim2=3)
}
#> torch_tensor
#> (1,.,.) =
#> 0.0000 1.4648 0.0000 0.0000
#> 0.0000 -0.1176 0.0000 0.0000
#>
#> (2,.,.) =
#> 0.0000 0.0000 -0.0131 0.0000
#> 0.0000 0.0000 -0.6292 0.0000
#>
#> (3,.,.) =
#> 0.0000 0.0000 0.0000 0.2110
#> 0.0000 0.0000 0.0000 -0.2680
#>
#> (4,.,.) =
#> 0 0 0 0
#> 0 0 0 0
#> [ CPUFloatType{4,2,4} ]