【深度学习框架-torch】torch.norm函数详解用法

目录

torch.norm参数定义

torch版本 1.6

def norm(input, p="fro", dim=None, keepdim=False, out=None, dtype=None)

input

input (Tensor): the input tensor 输入为tensor

p

 p (int, float, inf, -inf, 'fro', 'nuc', optional): the order of norm. Default: 'fro'
            The following norms can be calculated:

            =====  ============================  ==========================
            ord    matrix norm                   vector norm
            =====  ============================  ==========================
            None   Frobenius norm                2-norm
            'fro'  Frobenius norm                --
            'nuc'  nuclear norm                  --
            Other  as vec norm when dim is None  sum(abs(x)**ord)**(1./ord)
            =====  ============================  ==========================

dim是matrix norm

如果 inputmatrix norm,也就是维度大于等于2维,则
P值默认为 fro, Frobenius norm可认为是与计算向量的欧氏距离类似
有时候为了比较真实的矩阵和估计的矩阵值之间的误差
或者说比较真实矩阵和估计矩阵之间的相似性,我们可以采用 Frobenius 范数。

【深度学习框架-torch】torch.norm函数详解用法

p= 'nuc’时,是求核范数,核范数是矩阵奇异值的和。核范数的具体定义为

【深度学习框架-torch】torch.norm函数详解用法
【深度学习框架-torch】torch.norm函数详解用法
例子来源:https://zhuanlan.zhihu.com/p/104402273

p= other时,当作vec norm计算,p为int的形式,则是如下形式:

【深度学习框架-torch】torch.norm函数详解用法
详细解释:https://zhuanlan.zhihu.com/p/260162240

; dim是vector norm

【深度学习框架-torch】torch.norm函数详解用法

dim

dim (int, 2-tuple of ints, 2-list of ints, optional): If it is an int,
            vector norm will be calculated, if it is 2-tuple of ints, matrix norm
            will be calculated. If the value is None, matrix norm will be calculated
            when the input tensor only has two dimensions, vector norm will be
            calculated when the input tensor only has one dimension. If the input
            tensor has more than two dimensions, the vector norm will be applied to
            last dimension.

如果 dimNone, 当 input的维度只有2维时使用 matrix norm,当 input的维度只有1维时使用 vector norm,当 input的维度超过2维时,只在最后一维上使用 vector norm
如果 dim不为 None,1. dim是int类型,则使用 vector norm,如果 dim是2-tuple int类型,则使用 matrix norm.

Keepdim

keepdim (bool, optional): whether the output tensors have :attr:dim
            retained or not. Ignored if :attr:dim =  and
            :attr:out = . Default: 

keepdim为True,则保留dim指定的维度,如果为False,则不保留。默认为False

out

out (Tensor, optional): the output tensor. Ignored if
            :attr:dim =  and :attr:out = .

输出为tensor,如果 dim = None and out = None.则不输出

dtype

dtype (:class:torch.dtype, optional): the desired data type of
            returned tensor. If specified, the input tensor is casted to
            :attr:'dtype' while performing the operation. Default: None.

指定输出的数据类型

示例

>>> import torch
>>> 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.]])
>>> torch.norm(a)
>tensor(7.7460)
>>>计算流程: math.sqrt((4*4 + 3*3 + 2*2 + 1*1 +  -4*-4 + -3*-3 + -2*-2 + -1*-1))
7.7460
>>> torch.norm(b) # 默认计算F范数
tensor(7.7460)

Original: https://blog.csdn.net/qq_36287702/article/details/126330404
Author: 桐原因
Title: 【深度学习框架-torch】torch.norm函数详解用法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/709027/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球