【Pytorch】详细的torch.norm的用法

1.torch.norm的参数

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

根据python源码,可以看出torch.norm的参数有主要如下参数:

(1)input:输入tensor类型的数据

(2)p:指定的范数。

①:默认为p=‘fro’,计算矩阵的FFrobenius norm (Frobenius 范数),就是矩阵A各项元素的绝对值平方的总和,数学表达式为:
在这里插入图片描述
②:p='nuc’时,是求核范数,核范数是矩阵奇异值的和。(不常用)
③:常用的是第三种,p为int的形式,则是如下形式: 

 

(3)dim:指定在哪个维度进行,如果不指定,则是在所有维度进行计算。

dim (int, tuple of ints, list of ints, optional):
    Specifies which dimension or dimensions of :attr:`input` to
    calculate the norm across. If :attr:`dim` is ``None``, the norm will
    be calculated across all dimensions of :attr:`input`. If the norm
    type indicated by :attr:`p` does not support the specified number of
    dimensions, an error will occur.

(4)keepdim:True or False,如果True,则保留dim指定的维度,False则不保留。
(5)out:输出的tensor,文档没说具体含义,暂时不知。

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

(6)dtype:指定输出的tensor的数据类型。

2.示例

import torch
t = torch.ones(64, 3, 3, 3)
t_norm = t.norm(1, 3)
print(t_norm)

指定p=1,dim=3。也就是在t的第3个维度(从0开始)进行1范数计算。
调试一下可以发现:t_norm的shape为(64,3,3),而且每一个元素都是为3.
足以验证第1节的说法。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: np.linalg.norm()和torch.norm()都是用来计算向量或矩阵的范数的函数,但它们来自不同的库。np.linalg.norm()是NumPy库中的函数,而torch.norm()是PyTorch库中的函数。 两个函数的使用方式和参数略有不同。np.linalg.norm()可以用于计算向量或矩阵的范数,可以通过指定参数来选择不同的范数类型,比如默认的2范数(欧几里得范数),1范数(绝对值之和),无穷范数(最大绝对值)。而torch.norm()的使用方式类似,但它是针对PyTorch张量进行操作的。torch.norm()可以计算向量或矩阵的范数,同样可以通过指定参数来选择不同的范数类型。 不过需要注意的是,torch.norm()有一些特殊的用法和替代函数。根据引用,torch.norm()在最新的版本中已经被弃用,推荐使用torch.linalg.norm()来计算向量或矩阵的范数。而引用中提到的torch.linalg.vector_norm()可以用来计算向量范数,torch.linalg.matrix_norm()可以用来计算矩阵范数。这些函数可以在PyTorch中更精确地计算范数。 综上所述,np.linalg.norm()和torch.norm()都是用来计算向量或矩阵范数的函数,但使用方法和参数略有不同。在PyTorch中,推荐使用torch.linalg.norm()、torch.linalg.vector_norm()和torch.linalg.matrix_norm()来替代torch.norm()函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ torch.linalg.norm() 和 torch.linalg.vector_norm() 和 torch.linalg.matrix_norm()](https://blog.csdn.net/Aaron_neil/article/details/128427467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值