If A
is complex valued, it computes the norm of A$abs()
Support input of float, double, cfloat and cdouble dtypes.
Also supports batches of matrices: the norm will be computed over the
dimensions specified by the 2-tuple dim
and the other dimensions will
be treated as batch dimensions. The output will have the same batch dimensions.
Usage
linalg_matrix_norm(
A,
ord = "fro",
dim = c(-2, -1),
keepdim = FALSE,
dtype = NULL
)
Arguments
- A
(Tensor): tensor with two or more dimensions. By default its shape is interpreted as
(*, m, n)
where*
is zero or more batch dimensions, but this behavior can be controlled usingdim
.- ord
(int, inf, -inf, 'fro', 'nuc', optional): order of norm. Default:
'fro'
- dim
(int, Tupleint, optional): dimensions over which to compute the vector or matrix norm. See above for the behavior when
dim=NULL
. Default:NULL
- keepdim
(bool, optional): If set to
TRUE
, the reduced dimensions are retained in the result as dimensions with size one. Default:FALSE
- dtype
dtype (
torch_dtype
, optional): If specified, the input tensor is cast todtype
before performing the operation, and the returned tensor's type will bedtype
. Default:NULL
Details
ord
defines the norm that is computed. The following norms are
supported:
ord | norm for matrices | norm for vectors |
NULL (default) | Frobenius norm | 2 -norm (see below) |
"fro" | Frobenius norm | – not supported – |
"nuc" | nuclear norm | – not supported – |
Inf | max(sum(abs(x), dim=2)) | max(abs(x)) |
-Inf | min(sum(abs(x), dim=2)) | min(abs(x)) |
0 | – not supported – | sum(x != 0) |
1 | max(sum(abs(x), dim=1)) | as below |
-1 | min(sum(abs(x), dim=1)) | as below |
2 | largest singular value | as below |
-2 | smallest singular value | as below |
other int or float | – not supported – | sum(abs(x)^{ord})^{(1 / ord)} |
See also
Other linalg:
linalg_cholesky_ex()
,
linalg_cholesky()
,
linalg_det()
,
linalg_eigh()
,
linalg_eigvalsh()
,
linalg_eigvals()
,
linalg_eig()
,
linalg_householder_product()
,
linalg_inv_ex()
,
linalg_inv()
,
linalg_lstsq()
,
linalg_matrix_power()
,
linalg_matrix_rank()
,
linalg_multi_dot()
,
linalg_norm()
,
linalg_pinv()
,
linalg_qr()
,
linalg_slogdet()
,
linalg_solve_triangular()
,
linalg_solve()
,
linalg_svdvals()
,
linalg_svd()
,
linalg_tensorinv()
,
linalg_tensorsolve()
,
linalg_vector_norm()
Examples
if (torch_is_installed()) {
a <- torch_arange(0, 8, dtype = torch_float())$reshape(c(3, 3))
linalg_matrix_norm(a)
linalg_matrix_norm(a, ord = -1)
b <- a$expand(c(2, -1, -1))
linalg_matrix_norm(b)
linalg_matrix_norm(b, dim = c(1, 3))
}
#> torch_tensor
#> 3.1623
#> 10.0000
#> 17.2627
#> [ CPUFloatType{3} ]