PyTorch入门学习 13-torch.norm

avatar 2024年04月16日18:15:55 0 722 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此

norm 是计算范数,范就是对矩阵(向量)里的数进行某种运算,获得一个数值,形容这个矩阵的规模(大小)

norm(a, p) 有2个参数

a 是一个张量,p是一个数字

公式如下:

 

即分别求每个元素的p次方,再求和,最后开p次根号

当 p = 1 时,即 求 所有数之和

当 p = 2 时,即 求 所有数的平方和,再跟平方根

当 p = 无穷大,高数学过,极限=元素最大值

当 p = 无穷小,高数学过,极限=元素最小值

 

代码

import torch

# 例1、一维张量
a = torch.tensor([1, 2, 3, 4], dtype=torch.float32)
print(a)
# norm(a, p) 是计算范数,公式是:  (x1^p + x2^p + x3^p + ...) ^ (1/p)
# 即对a中的每个元素求p次方,然后求和,最后再求p次根
print(torch.norm(a))  # 默认p=2, 故 1^2 + 2^2 + 3^2 + 4^2 = 30, 再开根号,得到5.4772
print(torch.norm(a, 1))  # 指定p=1,故 1 + 2 + 3 + 4 = 10
print(torch.norm(a, float('inf')))  # inf指的是无穷大,即p=无穷大,故极限为元素里最大的值,即4
print()

# 例2、二维张量
b = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)
print(torch.norm(b))  # p=2, 故 1^2 + 2^2 + 3^2 + 4^2 = 30, 再开根号,得到5.4772
print(torch.norm(b, 1))  # p=1, 故 1 + 2 + 3 + 4 = 10
print(torch.norm(b, float('inf')))  # p=无穷大,故极限为元素里最大的值,即4

 

运行结果

tensor([1., 2., 3., 4.])
tensor(5.4772)
tensor(10.)
tensor(4.)

tensor(5.4772)
tensor(10.)
tensor(4.)

 

  • 微信
  • 交流学习,资料分享
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0