【pytorch】范数的计算

近日在看沐神的《动手学深度学习》,其中提到了范数这一数学概念,感觉很陌生,参考ChatGPT补一下知识。

范数

让我们通过具体的示例来详细说明如何使用 torch.linalg.norm 计算不同类型的范数,以及如何处理高维张量。

示例 1: 计算向量的 L2 范数(欧几里得范数)

import torch

# 创建一个向量
vector = torch.tensor([3.0, 4.0])

# 计算 L2 范数
l2_norm = torch.linalg.norm(vector, ord=2)

print(f"L2 范数: {
     l2_norm}")  # 输出: 5.0

在这个例子中,计算的是向量 [3.0, 4.0] 的 L2 范数,其结果是 5.0。
此处使用的是L2范数,也是norm的默认设置,其实就是平方根,类似于勾股定理的结果。

示例 2: 计算矩阵的 Frobenius 范数

# 创建一个矩阵
matrix = torch.tensor([[1.0, 2.0], [3.0, 4.0]])

# 计算 Frobenius 范数
frobenius_norm = torch.linalg.norm(matrix, ord='fro')

print(f"Frobenius 范数: {
     frobenius_norm}")  # 输出: 5.4772

在这个例子中,计算的是矩阵的 Frobenius 范数,即矩阵中所有元素的平方和的平方根。上面的结果也就是30的开方。

示例 3: 计算向量的 L1 范数(曼哈顿距离)

# 创建一个向量
vector = torch.tensor([3.0, 4.0]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值