1 模型的作用是什么
nn.LayerNorm 是一个用于实现层归一化的模块。它的主要作用是对输入的特征进行归一化,以提高模型的训练稳定性和收敛速度。
2 nn.LayerNorm(n_embd)可学习参数是什么
在 nn.LayerNorm 中,主要有两个可学习的参数:
权重(weight):用于缩放归一化后的输出。
偏置(bias):用于平移归一化后的输出。
参数的形状
权重(weight) 和 偏置(bias) 的形状都是与输入特征的最后一个维度相同。在 nn.LayerNorm(n_embd) 中,n_embd 是输入特征的维度,因此:
权重的形状为 (n_embd,)
偏置的形状为 (n_embd,)
import torch
import torch.nn as nn
# 定义输入特征的维度
n_embd = 64
# 创建 LayerNorm 层
layer_norm = nn.LayerNorm(n_embd)
# 打印可学习参数的形状
print("Weight shape:", layer_norm.weight.shape) # 输出: Weight shape: torch.Size([64])
print("Bias shape:", layer_norm.bias.shape) # 输出: Bias shape: torch.Size([64])
2 这些可学习的参数是怎么参与计算的
import torch
import torch.nn as nn
# 定义输入特征的维度
n_embd = 4
# 创建 LayerNorm 层
layer_norm = nn.LayerNorm(n_embd)
# 创建一个输入张量
input_tensor = torch.tensor([[1.0, 2.0, 3.0, 4.0],
[5.0, 6.0, 7.0, 8.0]])
# 应用 LayerNorm
output_tensor = layer_norm(input_tensor)
# 打印输出
print("Input Tensor:\n", input_tensor)
print("Output Tensor:\n", output_tensor)
print("Weight (gamma):\n", layer_norm.weight)
print("Bias (beta):\n", layer_norm.bias)