`R/gen-namespace-docs.R`

, `R/gen-namespace-examples.R`

, `R/gen-namespace.R`

`torch_diagonal.Rd`

Diagonal

torch_diagonal(self, outdim, dim1 = 1L, dim2 = 2L, offset = 0L)

self | (Tensor) the input tensor. Must be at least 2-dimensional. |
---|---|

outdim | dimension name if |

dim1 | (int, optional) first dimension with respect to which to take diagonal. Default: 0. |

dim2 | (int, optional) second dimension with respect to which to take diagonal. Default: 1. |

offset | (int, optional) which diagonal to consider. Default: 0 (main diagonal). |

Returns a partial view of `input`

with the its diagonal elements
with respect to `dim1`

and `dim2`

appended as a dimension
at the end of the shape.

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.

Applying `torch_diag_embed`

to the output of this function with
the same arguments yields a diagonal matrix with the diagonal entries
of the input. However, `torch_diag_embed`

has different default
dimensions, so those need to be explicitly specified.

if (torch_is_installed()) { a = torch_randn(c(3, 3)) a torch_diagonal(a, offset = 0) torch_diagonal(a, offset = 1) x = torch_randn(c(2, 5, 4, 2)) torch_diagonal(x, offset=-1, dim1=1, dim2=2) }#> torch_tensor #> (1,.,.) = #> 0.7483 #> 0.7505 #> #> (2,.,.) = #> -0.7690 #> 1.5591 #> #> (3,.,.) = #> 0.7832 #> 1.0473 #> #> (4,.,.) = #> -1.9936 #> 0.3438 #> [ CPUFloatType{4,2,1} ]