当前位置: 首页 > news >正文

pytorch基本运算-范数

引言

前序学习进程中,已经对pytorch基本运算有了详细探索,文章链接有:

基本运算
广播失效
乘除法和幂运算
hadamard积、点积和矩阵乘法

上述计算都是以pytorch张量为运算元素,这些张量基本上也集中在一维向量和二维矩阵,此时也必不可少会涉及到另一个重要概念:范数。

今天的学习目标就是掌握范数的基本定义和计算方法。

范数

本次主要讨论L1和L2范数。

L2范数

欧几里得距离是一个L2范数:假设n维向量x中的元素是x1,…,xn,其L2范数是向量元素平方和的平方根:
∥ x ∥ 2 = ∑ i = 1 n x i 2 \left \| x \right \|_{2}=\sqrt{\sum _{i=1}^{n}x_{i}^{2}} x2=i=1nxi2 代码示例:

# 导入包
import torch
# 生成多维张量
y=torch.tensor([1.0,3.0])
# L2范数计算
z=torch.norm(y)
# 打印
print(z)
# L2平方
t=z*z
# 打印
print(t)

代码运行效果为:
L2范数

L1范数

L1范数:假设n维向量x中的元素是x1,…,xn,其L1范数是向量元素绝对值的和:
∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \left \| x \right \|_{1}=\sum _{i=1}^{n} \left | {x_{i}} \right | x1=i=1nxi代码示例:

# 导入包
import torch
# 生成多维张量
y=torch.tensor([6.0,8.0])
# L2范数计算
z=torch.norm(y)
# 打印
print(z)
# L2平方
t=z*z
# 打印
print(t)
# L1范数计算
p=torch.abs(y).sum()
# 打印
print(p)

代码运行效果为:
L1范数计算

矩阵范数

在已经讨论L1和L2范数的基础上,可以很直接地理解一个n行m列矩阵的范数计算公式应当为:
∥ x ∥ 2 = ∑ i = 1 n ∑ j = 1 m x i j 2 \left \| x \right \|_{2}=\sqrt{\sum _{i=1}^{n}\sum _{j=1}^{m}x_{ij}^{2}} x2=i=1nj=1mxij2 代码示例:

# 导入包
import torch
# 生成多维张量,5x5纯1矩阵
y=torch.ones([5,5])
# 打印
print('矩阵=',y)
# L2范数计算
z=torch.norm(y)
# 打印
print('L2=',z)
# L2平方
t=z*z
# 打印
print('L2*L2=',t)
# L1范数计算
p=torch.abs(y).sum()
# 打印
print('L1',p)

代码运行效果为:
矩阵范数

总结

学习了L1和L2范数的基本定义,对n行m’列矩阵范数的计算进行了探索。

相关文章:

  • TS 星际通信指南:从 TCP 到 UDP 的宇宙漫游
  • 初识CSS3
  • Pytorch知识点2
  • U-ResNet 改进:集成特征金字塔网络(FPN)
  • 深度学习与神经网络 前馈神经网络
  • vue中父子参数传递双向的方式不同
  • 聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化
  • react 生命周期
  • 详解鸿蒙仓颉开发语言中的计时器
  • LLM模型量化从入门到精通:Shrink, Speed, Repeat
  • C++之动态数组vector
  • 使用 Haproxy 搭建高可用 Web 群集
  • 电子电气架构 --- 如何应对未来区域式电子电气(E/E)架构的挑战?
  • 趋势因子均值策略思路
  • 三大模块曝光:分钟级搭建专属平台,解锁算力灵活操控新体验,重新定义智能开发效率天花板
  • 数字规则:进制转换与原码、反码、补码
  • Spring Boot 3.X 下Redis缓存的尝试(二):自动注解实现自动化缓存操作
  • android binder(二)应用层编程实例
  • 助力活力生活的饮食营养指南
  • LabVIEW轴角编码器自动检测