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

pytorch中torch.nn.functional.normalize、nn.norm和LayerNorm计算中的区别

torch.nn.functional.normalize

计算方式

v = v max ⁡ ( ∥ v ∥ p , ϵ ) \mathbf{v} = \frac{\mathbf{v}}{\max\left(\|\mathbf{v}\|_p, \epsilon\right)} v=max(vp,ϵ)v

pytorch例子

a = torch.arange(12).reshape(3,4).float()
torch.nn.functional.normalize(a, dim=-1)
'''
tensor([[0.0000, 0.2673, 0.5345, 0.8018],
        [0.3563, 0.4454, 0.5345, 0.6236],
        [0.4182, 0.4704, 0.5227, 0.5750]])
'''

这样除一下就相等了

a = torch.arange(12).reshape(3,4).float()
torch.nn.functional.normalize(a, dim=-1)
'''
tensor([[0.0000, 0.2673, 0.5345, 0.8018],
        [0.3563, 0.4454, 0.5345, 0.6236],
        [0.4182, 0.4704, 0.5227, 0.5750]])
'''
a / a.norm(dim=-1,keepdim=True)
'''
tensor([[0.0000, 0.2673, 0.5345, 0.8018],
        [0.3563, 0.4454, 0.5345, 0.6236],
        [0.4182, 0.4704, 0.5227, 0.5750]])
'''

nn.norm

计算方式

可以通过p参数指定是pro(Frobenium norm,其实就是平方和开根号)还是nuc(叫nuclear norm,其实就是SVD分解的奇异值,也就是Singular Value)

pytorch例子

a = torch.arange(12).reshape(3,4).float()
a.norm(dim=-1, keepdim=True)
'''
tensor([[ 3.7417],
        [11.2250],
        [19.1311]])
'''

LayerNorm

计算方式

分子减均值,分母对方差开根号,更多细节参考 超细节的BatchNorm/BN/LayerNorm/LN/SyncLN/ShuffleBN/RMSNorm知识点

pytorch例子

a = torch.arange(12).reshape(3,4).float()
(a - a.mean(dim=-1, keepdims=True)) / torch.sqrt(a.var(dim=-1, keepdims=True, correction=0))
'''
tensor([[-1.3416, -0.4472,  0.4472,  1.3416],
        [-1.3416, -0.4472,  0.4472,  1.3416],
        [-1.3416, -0.4472,  0.4472,  1.3416]])
'''

http://www.kler.cn/a/449632.html

相关文章:

  • 模型优化之知识蒸馏
  • 如何根据一系列提交文件,匹配对应的git提交记录?用ai
  • 维克日记:私密写作新选择,轻松记录生活点滴
  • 基于Matlab实现无刷直流电机仿真
  • Aec-Library-Website 项目常见问题解决方案
  • 法学硕士,有哪些专业可以申请呢?
  • Java CPU飙升 排查
  • pytorch MoE(专家混合网络)的简单实现。
  • 【网络安全】网站常见安全漏洞—服务端漏洞介绍
  • Linux提示Could not resolve host
  • 30多种独特艺术抽象液态酸性金属镀铬封面背景视觉纹理MOV视频素材
  • 【Java基础面试题031】Java运行时异常和编译时异常之间的区别是什么?
  • 验证 Dijkstra 算法程序输出的奥秘
  • 12.12深度学习_CNN_项目实战
  • 武汉火影数字3D光影秀打造 “光+影+文化+故事+演艺“完美融合
  • Redis 事务处理:保证数据完整性
  • 深入理解Redis
  • 期权VIX指数构建与择时应用
  • windos 安装docker
  • JS代码混淆器:JavaScript obfuscator 让你的代码看起来让人痛苦
  • 被裁20240927 --- 嵌入式硬件开发 前篇
  • 通过Docker Compose来实现项目可以指定读取不同环境的yml包
  • 【D03】SNMP、NETBIOS和SSH
  • sqli-labs(第二十六关-第三十关卡通关攻略)
  • 使用 Marp 将 Markdown 导出为 PPT 后不可编辑的原因说明及解决方案
  • K8s 无头服务(Headless Service)