详细的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’,计算矩阵的Frobenius 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.
  1. keepdim:True or False,如果True,则保留dim指定的维度,False则不保留。
  2. out:输出的tensor,文档没说具体含义,暂时不知。
out (Tensor, optional): the output tensor. Ignored if
    :attr:`dim` = ``None`` and :attr:`out` = ``None``.
  1. 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),keepdim默认设置的是False,所以第3个维度对应的3消失了,如果keepdim=True,将会保留第3个维度,但是会变成(64,3,3,1)

每一个元素都是为3,足以验证第1节的说法。
在这里插入图片描述

  • 15
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

little student

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值