torch.nn.functional.normalize用法

L p 范数

a = torch.Tensor([1,2,3])
# a的L1范数为 6=1+2+3;L2的范数为 sqrt(14)=sqrt(1^2+2^2+3^2)

torch.nn.functional.normalize

为了方便验证,以下使用了 L1 范数

当 dim = 0

b = torch.Tensor([[1,2,3], [4,5,6]]) # shape=(2,3)
b0=torch.nn.functional.normalize(b,p=1, dim=0)

b
Out[200]: 
tensor([[1., 2., 3.],
        [4., 5., 6.]])
        
b0
Out[201]: 
tensor([[0.2000, 0.2857, 0.3333],
        [0.8000, 0.7143, 0.6667]])
        
b/(21) # 21 = 1+2+3+4+5+6 即为b的1范数
Out[205]: 
tensor([[0.0476, 0.0952, 0.1429],
        [0.1905, 0.2381, 0.2857]])

当 dim = 1

b1=torch.nn.functional.normalize(b,p=1, dim=1)
b1
Out[207]: 
tensor([[0.1667, 0.3333, 0.5000],
        [0.2667, 0.3333, 0.4000]])
        
b/6 # 6 = 1+2+3  即为b[0]的1范数
Out[209]: 
tensor([[0.1667, 0.3333, 0.5000],
        [0.6667, 0.8333, 1.0000]])
b/15 # 15 = 4+5+6   即为b[1]的1范数
Out[210]: 
tensor([[0.0667, 0.1333, 0.2000],
        [0.2667, 0.3333, 0.4000]])

应用

如果是一个数据size为(b, h, w)

c = torch.Tensor([[[1,2,3], [4,5,6]], [[7,8,9], [10,11,12]]])
c
Out[212]: 
tensor([[[ 1.,  2.,  3.],
         [ 4.,  5.,  6.]],
         
        [[ 7.,  8.,  9.],
         [10., 11., 12.]]])

c1=torch.nn.functional.normalize(c,p=1, dim=0) 
c/c1
Out[275]: 
tensor([[[ 8.0000, 10.0000, 12.0000],
         [14.0000, 16.0000, 18.0000]],
         
        [[ 8.0000, 10.0000, 12.0000],
         [14.0000, 16.0000, 18.0000]]])

c1=torch.nn.functional.normalize(c,p=1, dim=1)
c/c1
Out[277]: 
tensor([[[ 5.0000,  7.0000,  9.0000],
         [ 5.0000,  7.0000,  9.0000]],
        [[17.0000, 19.0000, 21.0000],
         [17.0000, 19.0000, 21.0000]]])

可以看到dim=0的时候,normalization即为使用同一个 (h, w)的数据对原始数据做除法。

所以torch.nn.functional.normalize并不能实现归一化的功能,原始数据里面如果有负数的话,torch.nn.functional.normalize之后还是会有负数存在。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值