【pytorch】norm的使用

embedded/2025/1/22 19:51:35/

torch.norm [deprecated ]

在torch.norm中,通过参数p来定制order

主要有如下几类

  • L1 norm
    计算张量中所有数值之和
  • L2 norm
    计算张量中所有数值的平方和开根
  • Frobenius norm
    计算张量中所有维度上所有数值的平方和开根
  • Infinity norm
    计算张量中有所数值绝对值最大
  • Negative infinity norm
    计算张量中所有数值绝对值最小
python">import torch# Create a tensor
x = torch.tensor([1.0, -2.0, 3.0])# L1 norm
l1_norm = torch.norm(x, p=1)
print("L1 norm(p=1):", l1_norm)  # Output: 6.0# L2 norm
l2_norm = torch.norm(x, p=2)
print("L2 norm(p=2):", l2_norm)  # Output: 3.7416573867739413# Frobenius norm (for matrices)
X = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
fro_norm = torch.norm(X, p='fro')
print("Frobenius norm(p='fro'):", fro_norm)  # Output: 5.477225575051661# Infinity norm
inf_norm = torch.norm(x, p=float('inf'))
print("Infinity norm(p=float('inf')):", inf_norm)  # Output: 3.0# Negative infinity norm
neg_inf_norm = torch.norm(x, p=float('-inf'))
print("Negative infinity norm(p=float('-inf')):", neg_inf_norm)  # Output: 1.0

torch.linalg

python">import torch
import torch.nn.functional as F# Create a tensor
x = torch.tensor([1.0, -2.0, 3.0])# L1 norm
l1_norm = torch.linalg.vector_norm(x, ord=1)
print("L1 norm(p=1):", l1_norm)  # Output: 6.0# L2 norm
l2_norm = torch.linalg.vector_norm(x, ord=2)
print("L2 norm(p=2):", l2_norm)  # Output: 3.7416573867739413# Frobenius norm (for matrices)
X = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
fro_norm = torch.linalg.matrix_norm(X, ord='fro')
print("Frobenius norm(p='fro'):", fro_norm)  # Output: 5.477225575051661# Infinity norm
inf_norm = torch.linalg.vector_norm(x, ord=float('inf'))
print("Infinity norm(p=float('inf')):", inf_norm)  # Output: 3.0# Negative infinity norm
neg_inf_norm = torch.linalg.vector_norm(x, ord=float('-inf'))
print("Negative infinity norm(p=float('-inf')):", neg_inf_norm)  # Output: 1.0

torch.nn.functional.normalize

注意,dim是必须要指定的,不然默认是1

python">import torch
import torch.nn.functional as F# Create a tensor
x = torch.tensor([1.0, -2.0, 3.0])
X = torch.tensor([[1.0, 2.0], [3.0, 4.0]])# L1 norm using F.normalize
l1_norm = F.normalize(x, p=1,dim=0)
print("L1 norm(p=1):", l1_norm)  # Output: tensor([ 0.1667, -0.3333,  0.5000])# L2 norm using F.normalize
l2_norm = F.normalize(x, p=2,dim=0)
print("L2 norm(p=2):", l2_norm)  # Output: [[0.3162, 0.4472],#         [0.9487, 0.8944]]# Frobenius norm (for matrices) using F.normalize
fro_norm = F.normalize(X, p='fro',dim=0 )
print("Frobenius norm(p='fro'):", fro_norm)  # Output: tensor([[0.3162, 0.4472],#         [0.9487, 0.8944]])# Infinity norm using F.normalize
inf_norm = F.normalize(x, p=float('inf'),dim=0)
print("Infinity norm(p=float('inf')):", inf_norm)  # Output: [ 0.3333, -0.6667,  1.0000]# Negative infinity norm using F.normalize
neg_inf_norm = F.normalize(x, p=float('-inf'),dim=0)
print("Negative infinity norm(p=float('-inf')):", neg_inf_norm)  # Output: [ 1., -2.,  3.]# Examples showing the usage of dim
# Example 1: L2 norm along dimension 0
x_2d = torch.tensor([[1.0, -2.0, 3.0], [4.0, -5.0, 6.0]])
l2_norm_dim0 = F.normalize(x_2d, p=2, dim=0)
print("L2 norm along dim=0:", l2_norm_dim0)  # Output: [[ 0.2425, -0.3714,  0.4472],#         [ 0.9701, -0.9285,  0.8944]]# Example 2: L2 norm along dimension 1
l2_norm_dim1 = F.normalize(x_2d, p=2, dim=1)
print("L2 norm along dim=1:", l2_norm_dim1)  # Output: [[ 0.2673, -0.5345,  0.8018],#         [ 0.4558, -0.5698,  0.6838]]

http://www.ppmy.cn/embedded/156138.html

相关文章

Mysql触发器(学习自用)

一、介绍 二、触发器语法 注意:拿取新的数据时用new,旧数据用old。

Python----Python高级(模块与包,Python基本库)

一、模块 1.1、概念 就是一个包含了Python代码的以.py为后缀的Python文件,可以被其他 Python程序导入和使用,也可以自己独立执行,里面存放着的是一组相关的函 数或者类,比如查看关键字列表时导入的keyword模块。 1.2、作用 令Py…

科技护航:分布式 IO 模块与大型 PLC,稳筑地铁安全防线

在城市的地下脉络中,地铁如灵动的巨龙,承载着无数人的出行需求。保障地铁的稳定安全运行,是城市高效运转的关键,而这背后,分布式 IO 模块与大型 PLC 的默契协作,功不可没。 智慧大脑 大型 PLC,…

springboot使用ssl连接elasticsearch

使用es时ssl证书报错 unable to find valid certification path to requested target 1.依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>2…

解锁辅助驾驶新境界:基于昇腾 AI 异构计算架构 CANN 的应用探秘

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《AI大模型》 期待您的关注 目录 一、引言 二、CANN 是什么 1. 异构计算与人工智能的关系 2. CANN 的定义和作用 3. CANN 的技…

C++ ——— 模拟实现 vector 类

目录 vector 类的框架 无参数的构造函数 析构函数 获取有效数据个数 获取容量 重载 [] 运算符 可读可写版本 只可读版本 扩容 尾插 实现迭代器 可读可写版本 只可读版本 自定义设置size长度和内容 在任意位置插入 删除任意位置的数据 赋值重载 vector 类的框…

Appium(四)

一、app页面元素定位 1、通过id定位元素: resrouce-id2、通过ClassName定位&#xff1a;classname3、通过AccessibilityId定位&#xff1a;content-desc4、通过AndroidUiAutomator定位5、通过xpath定位xpath、id、class、accessibility id、android uiautomatorUI AutomatorUI自…

python 解读JSON文件,一文搞懂!

一、JSON格式详解 所有 JSON 数据需要包裹在一个花括号中。 {"sites": [{ "name":"maybe" , "url":"www.maybe.com" }, { "name":"google" , "url":"www.google.com" }] } Objec…