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

【pytorch】norm的使用

torch.norm [deprecated ]

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

主要有如下几类

  • L1 norm
    计算张量中所有数值之和
  • L2 norm
    计算张量中所有数值的平方和开根
  • Frobenius norm
    计算张量中所有维度上所有数值的平方和开根
  • Infinity norm
    计算张量中有所数值绝对值最大
  • Negative infinity norm
    计算张量中所有数值绝对值最小
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

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

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.kler.cn/a/519272.html

相关文章:

  • 数据库视图
  • IP协议特性
  • 国产编辑器EverEdit - 输出窗口
  • Windows系统Tai时长统计工具的使用体验
  • 万字长文总结前端开发知识---JavaScriptVue3Axios
  • 【fly-iot飞凡物联】(20):2025年总体规划,把物联网整套技术方案和实现并落地,完成项目开发和课程录制。
  • 9【如何面对他人学习和生活中的刁难】
  • 破解浏览器渲染“死锁”:CSS与JS如何影响页面加载速度?
  • GCC之编译(8)AR打包命令
  • 【初阶数据结构】逆流的回环链桥:双链表
  • 【单链表算法实战】解锁数据结构核心谜题——相交链表
  • 解决使用Selenium时ChromeDriver版本不匹配问题
  • [b01lers2020]Life on Mars1
  • 计算机视觉:撕裂时空的视觉算法革命狂潮
  • 落地级分类模型训练框架搭建(1):resnet18/50和mobilenetv2在CIFAR10上测试结果
  • 高级java每日一道面试题-2025年01月24日-框架篇[SpringBoot篇]-如何理解 Spring Boot 中的 Starters(启动器) ?
  • three.js+WebGL踩坑经验合集(4.1):THREE.Line2的射线检测问题(注意本篇说的是Line2,同样也不是阈值方面的问题)
  • 多模态论文笔记——ViViT
  • OpenAI-Edge-TTS的使用
  • 深入解析Gradle项目发布配置:从构建到仓库部署
  • SAM 2运行笔记
  • 为AI聊天工具添加一个知识系统 之69 详细设计 之10 三种中台和时间度量 之2
  • 5.如何减少顶点数
  • 【elasticsearch】reindex 操作将索引的数据复制到另一个索引
  • 【2024年华为OD机试】 (A卷,200分)- 几何平均值最大子数组(JavaScriptJava PythonC/C++)
  • 《CPython Internals》阅读笔记:p356-p359