LayerNorm
场景说明
使用均方差对tensor做归一化,目前kdnn支持torch.float16和torch.float32数据类型,其他数据类型会走开源分支。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import torch import torch.nn as nn #使能KDNN torch._C._set_kdnn_enabled(True) # 输入数据: (batch_size, seq_len, hidden_dim) input = torch.randn(2, 5, 10) # 2个样本,5个时间步,特征维度10 默认为fp32数据类型 # 定义 LayerNorm (对最后一维 hidden_dim=10 归一化) layer_norm = nn.LayerNorm(10) # 或者 normalized_shape=[5,10] 对最后两维归一化 默认为fp32数据类型 # 前向计算 output = layer_norm(input) # 验证: 归一化后最后一维的均值接近0,方差接近1 print("LayerNorm 输出均值:", output.mean(dim=-1)) # 应接近0 print("LayerNorm 输出方差:", output.var(dim=-1, unbiased=False)) # 应接近1 |
父主题: 使用示例