pytorch中的torch.norm用法介绍

用法介绍

pytorch中的torch.norm主要用于计算矩阵和向量的 p p p范数,具体的用法如下所示:

torch.norm(input, p=‘fro’, dim=None, keepdim=False, out=None, dtype=None)

  • input (Tensor): 输入的张量,数据类型必须是浮点型或复杂输入。对于复杂输入,使用每个元素的绝对值计算范数。如果输入很复杂,并且未指定dtypeout,则结果的数据类型将是相应的浮点类型
  • p (int, float, inf, -inf, ‘fro’,‘nuc’, optional): 表示指定的范数,其中默认类型’fro’Frobenius范数,'nuc’表示矩阵的核范数
  • dim (int, tuple of python:ints, list of python:ints, optional): 指定要计算范数的输入维度。如果dimNone,则将在输入的所有维度上计算范数。
  • keepdim (bool, optional): 输出的张量是否保持不变,默认值是False,如果dim = Noneout = None,则该参数会被省略掉
  • out (Tensor, optional): 输出的张量,如果dim = Noneout = None,则该参数会被省略掉
  • dtype (torch.dtype, optional): 返回的张量的所需数据类型。如果指定,则在执行操作时将输入张量转换为dtype。默认值是None

代码实例

 在图像中会用到torch.norm函数来计算图像中 L 2 L_2 L2范数。给定一批图像 X ∈ R b × c × w × h X \in \mathbb{R}^{b \times c \times w \times h} XRb×c×w×h,则该图像的 L 2 L_2 L2范数的定义为: L 2 ( X b , : , w , h ) = ∑ l = 1 c X b , l , w , h 2 L_2(X_{b,:,w,h})=\sqrt{\sum\limits_{l=1}^{c}X_{b,l,w,h}^2} L2(Xb,:,w,h)=l=1cXb,l,w,h2 X b , c , w , h ′ = X b , c , w , h L 2 ( X b , : , w , h ) X^{\prime}_{b,c,w,h}=\frac{X_{b,c,w,h}}{L_2(X_{b,:,w,h})} Xb,c,w,h=L2(Xb,:,w,h)Xb,c,w,h相关的代码实例如下所示

import torch 

import torch 

def l2_norm(input, p_, dim_, keepdim_):
    norm = torch.norm(input, p=p_, dim=dim_, keepdim=keepdim_)
    return norm

if __name__ == '__main__':
	input = torch.rand(4,3,32,32)
	print(l2_norm(input, 2, None, False).shape)
	input = torch.rand(4,3,32,32)
	print(l2_norm(input, 2, 1, True).shape)

 给定一批图片 X ∈ R B × C × W × H X\in \mathbb{R}^{B \times C\times W \times H} XRB×C×W×H,如果针对每一张图片 X i ∈ R C × W × H X_i\in \mathbb{R}^{C \times W \times H} XiRC×W×H要计算 ζ = ∥ X i ∥ 0 ∥ X i ∥ 2 \zeta=\frac{\|X_i\|_0}{\|X_i\|_2} ζ=Xi2Xi0则有如下程序

import torch
inputs = torch.rand(5, 1, 28, 28)
outputs_L0_norm = torch.norm(inputs, p=0, dim=(2,3), keepdim=True)
outputs_L2_norm = torch.norm(inputs, p=2, dim=(2,3), keepdim=True)
outputs = outputs_L0_norm / outputs_L2_norm * torch.ones(inputs.shape)
print(outputs)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道2024

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

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

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

打赏作者

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

抵扣说明:

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

余额充值