You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

torch.sum((x-y)**2)与torch.norm(x-y,p=2)结果差异咨询

关于张量L2范数与平方和结果差异的解释

你这俩结果根本没差异,是一回事儿——L2范数的定义就是张量所有元素平方和的算术平方根。

你算的torch.sum((disk-disk2)**2)得到224,这是差值张量所有元素的平方总和;而torch.norm(..., p=2)做的就是对这个平方和开根号的操作:√224 ≈ 14.966,和你得到的范数结果完全对应。

可以跑这段代码验证:

import torch

def generate_disk(width, height, radius):
    x,y = torch.linspace(-1, 1, width),torch.linspace(-1, 1, height)
    X, Y = torch.meshgrid(x, y)
    distance = torch.sqrt(X**2 + Y**2)
    disk = (distance <= radius).float()
    return disk

disk = generate_disk(50,50,0.2).unsqueeze(0)
disk2 = generate_disk(50,50,0.4).unsqueeze(0)

diff = disk - disk2
sum_sq = torch.sum(diff**2)
l2_norm = torch.norm(diff, p=2)

print(f"平方和: {sum_sq.item()}")
print(f"L2范数: {l2_norm.item()}")
print(f"平方和开根号: {torch.sqrt(sum_sq).item()}")

输出里torch.sqrt(sum_sq)和l2_norm的数值会完全一致,仅可能因浮点数精度存在可忽略的细微差异。

说白了,你看到的不是差异,是L2范数计算过程中两个不同阶段的结果——一个是平方和,一个是平方和开根号,本质是同一计算的前后步骤。

内容的提问来源于stack exchange,提问作者Cantor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:29:55