尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

归一化:L2Norm朴素

归一化:L2Norm朴素 L2Norm朴素.h// L2Norm朴素.h —— L2 范数归一化沿向量整体朴素标量实现声明// 用途DeltaNet 中 q/k 按每个 (头, token, seq) 切片独立归一——本函数处理单个切片外层负责切片遍历#pragmaonce// 引入基础类型浮点/size_t 别名#include公共/基础定义.h// L2Norm朴素对单向量按 L2 范数欧氏长度归一// 公式$$ \hat{x}_i \frac{x_i}{\sqrt{\sum_{j} x_j^2 \epsilon}} $$// 纯文本x̂_i x_i / sqrt( Σx_j² ε )// 注意与 RMSNorm 区别RMSNorm 除数带 1/d除以均值L2Norm 除数不带 1/d除以总和。// 参数输入 待归一化向量起点输出 结果起点元素数 切片长度// epsilon 防除零常数DeltaNet 用 1e-6// 说明调用方负责把 q/k 按 (头, token, seq) 切分后对每个切片调用本函数voidL2Norm朴素(constfloat*输入,float*输出,size_t 元素数,floatepsilon);L2Norm朴素.cpp// L2Norm朴素.cpp —— L2 范数归一化沿向量整体朴素标量实现// 用途把单切片向量缩放到单位长度欧氏范数 1除数不带 1/d区别于 RMSNorm#include内核/归一化/L2Norm朴素.h// 引入标准头平方根 sqrt#includecmath// L2Norm朴素按 L2 范数归一单向量// 公式x̂_i x_i / sqrt( Σx_j² ε )// 实现先累加全部元素的平方和double 累加防精度损失开方后逐元素相除voidL2Norm朴素(constfloat*输入,float*输出,size_t 元素数,floatepsilon){// 第一步累加平方和不除以元素数——这是与 RMSNorm 的关键区别double平方和0.0;for(size_t i0;i元素数;i){平方和static_castdouble(输入[i])*输入[i];}// 第二步L2 范数 sqrt( Σx_j² ε )constdouble范数std::sqrt(平方和static_castdouble(epsilon));// 第三步逐元素除以范数double 中间量保证精度for(size_t i0;i元素数;i){输出[i]static_cast浮点(static_castdouble(输入[i])/范数);}}
返回列表