torch / torch.linalg
torch.linalg¶
Common linear algebra operations.
Functions¶
-
torch.linalg.
det
(input) → Tensor¶ Alias of
torch.det()
.
-
torch.linalg.
norm
(input, ord=None, dim=None, keepdim=False, *, out=None, dtype=None) → Tensor¶ Returns the matrix norm or vector norm of a given tensor.
This function can calculate one of eight different types of matrix norms, or one of an infinite number of vector norms, depending on both the number of reduction dimensions and the value of the ord parameter.
- Parameters
input (Tensor) – The input tensor. If dim is None, x must be 1-D or 2-D, unless
ord
is None. If bothdim
andord
are None, the 2-norm of the input flattened to 1-D will be returned.ord (int, float, inf, -inf, 'fro', 'nuc', optional) –
The order of norm. inf refers to
float('inf')
, numpy’sinf
object, or any equivalent object. The following norms can be calculated:ord
norm for matrices
norm for vectors
None
Frobenius norm
2-norm
’fro’
Frobenius norm
– not supported –
‘nuc’
nuclear norm
– not supported –
inf
max(sum(abs(x), dim=1))
max(abs(x))
-inf
min(sum(abs(x), dim=1))
min(abs(x))
0
– not supported –
sum(x != 0)
1
max(sum(abs(x), dim=0))
as below
-1
min(sum(abs(x), dim=0))
as below
2
2-norm (largest sing. value)
as below
-2
smallest singular value
as below
other
– not supported –
sum(abs(x)**ord)**(1./ord)
Default:
None
dim (int, 2-tuple of python:ints, 2-list of python:ints, optional) – If
dim
is an int, vector norm will be calculated over the specified dimension. Ifdim
is a 2-tuple of ints, matrix norm will be calculated over the specified dimensions. Ifdim
is None, matrix norm will be calculated when the input tensor has two dimensions, and vector norm will be calculated when the input tensor has one dimension. Default:None
keepdim (bool, optional) – If set to True, the reduced dimensions are retained in the result as dimensions with size one. Default:
False
- Keyword Arguments
out (Tensor, optional) – The output tensor. Ignored if
None
. Default:None
dtype (
torch.dtype
, optional) – If specified, the input tensor is cast todtype
before performing the operation, and the returned tensor’s type will bedtype
. If this argument is used in conjunction with theout
argument, the output tensor’s type must match this argument or a RuntimeError will be raised. This argument is not currently supported forord='nuc'
orord='fro'
. Default:None
Examples:
>>> import torch >>> from torch import linalg as LA >>> a = torch.arange(9, dtype=torch.float) - 4 >>> a tensor([-4., -3., -2., -1., 0., 1., 2., 3., 4.]) >>> b = a.reshape((3, 3)) >>> b tensor([[-4., -3., -2.], [-1., 0., 1.], [ 2., 3., 4.]]) >>> LA.norm(a) tensor(7.7460) >>> LA.norm(b) tensor(7.7460) >>> LA.norm(b, 'fro') tensor(7.7460) >>> LA.norm(a, float('inf')) tensor(4.) >>> LA.norm(b, float('inf')) tensor(9.) >>> LA.norm(a, -float('inf')) tensor(0.) >>> LA.norm(b, -float('inf')) tensor(2.) >>> LA.norm(a, 1) tensor(20.) >>> LA.norm(b, 1) tensor(7.) >>> LA.norm(a, -1) tensor(0.) >>> LA.norm(b, -1) tensor(6.) >>> LA.norm(a, 2) tensor(7.7460) >>> LA.norm(b, 2) tensor(7.3485) >>> LA.norm(a, -2) tensor(0.) >>> LA.norm(b.double(), -2) tensor(1.8570e-16, dtype=torch.float64) >>> LA.norm(a, 3) tensor(5.8480) >>> LA.norm(a, -3) tensor(0.)
Using the
dim
argument to compute vector norms:>>> c = torch.tensor([[1., 2., 3.], ... [-1, 1, 4]]) >>> LA.norm(c, dim=0) tensor([1.4142, 2.2361, 5.0000]) >>> LA.norm(c, dim=1) tensor([3.7417, 4.2426]) >>> LA.norm(c, ord=1, dim=1) tensor([6., 6.])
Using the
dim
argument to compute matrix norms:>>> m = torch.arange(8, dtype=torch.float).reshape(2, 2, 2) >>> LA.norm(m, dim=(1,2)) tensor([ 3.7417, 11.2250]) >>> LA.norm(m[0, :, :]), LA.norm(m[1, :, :]) (tensor(3.7417), tensor(11.2250))
此页内容是否对您有帮助