Bootstrap

nn.LayerNorm(n_embd)可学习参数,以及如何参与运算的

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)
;