add fourth chapter

This commit is contained in:
skindhu 2024-11-05 17:23:49 +08:00
parent 1ea9f5acd0
commit 22e6d87ad9
1 changed files with 18 additions and 18 deletions

View File

@ -296,17 +296,17 @@ print("Variance:\n", var)
```python ```python
Normalized layer outputs: Normalized layer outputs:
tensor([[ 0.6159, 1.4126, -0.8719, 0.5872, -0.8719, -0.8719], tensor([[ 0.6159, 1.4126, -0.8719, 0.5872, -0.8719, -0.8719],
[-0.0189, 0.1121, -1.0876, 1.5173, 0.5647, -1.0876]], [-0.0189, 0.1121, -1.0876, 1.5173, 0.5647, -1.0876]],
grad_fn=<DivBackward0>) grad_fn=<DivBackward0>)
Mean: Mean:
tensor([[2.9802e-08], tensor([[2.9802e-08],
[3.9736e-08]], grad_fn=<MeanBackward1>) [3.9736e-08]], grad_fn=<MeanBackward1>)
Variance: Variance:
tensor([[1.], tensor([[1.],
[1.]], grad_fn=<VarBackward0>) [1.]], grad_fn=<VarBackward0>)
``` ```
请注意,输出张量中的值`2.9802e-08`是`2.9802 × 10^-8`的科学记数法表示,用十进制形式表示为`0.0000000298`。这个值虽然非常接近 0但由于计算机表示数字的精度有限会产生微小的数值误差因此不完全等于 0。 请注意,输出张量中的值`2.9802e-08`是`2.9802 × 10^-8`的科学记数法表示,用十进制形式表示为`0.0000000298`。这个值虽然非常接近 0但由于计算机表示数字的精度有限会产生微小的数值误差因此不完全等于 0。
@ -318,11 +318,11 @@ torch.set_printoptions(sci_mode=False)
print("Mean:\n", mean) print("Mean:\n", mean)
print("Variance:\n", var) print("Variance:\n", var)
Mean: Mean:
tensor([[ 0.0000], tensor([[ 0.0000],
[ 0.0000]], grad_fn=<MeanBackward1>) [ 0.0000]], grad_fn=<MeanBackward1>)
Variance: Variance:
tensor([[1.], tensor([[1.],
[1.]], grad_fn=<VarBackward0>) [1.]], grad_fn=<VarBackward0>)
``` ```
在本节内容中,我们已逐步实现并应用了层归一化。现在将这个过程封装到一个 PyTorch 模块中,以便后续在 GPT 模型中使用。 在本节内容中,我们已逐步实现并应用了层归一化。现在将这个过程封装到一个 PyTorch 模块中,以便后续在 GPT 模型中使用。
@ -366,11 +366,11 @@ print("Variance:\n", var)
```python ```python
Mean: Mean:
tensor([[ -0.0000], tensor([[ -0.0000],
[ 0.0000]], grad_fn=<MeanBackward1>) [ 0.0000]], grad_fn=<MeanBackward1>)
Variance: Variance:
tensor([[1.0000], tensor([[1.0000],
[1.0000]], grad_fn=<VarBackward0>) [1.0000]], grad_fn=<VarBackward0>)
``` ```
在本节中,我们介绍了实现 GPT 架构所需的一个基础模块(`LayerNorm`),如图 4.7 所示。 在本节中,我们介绍了实现 GPT 架构所需的一个基础模块(`LayerNorm`),如图 4.7 所示。
@ -405,12 +405,12 @@ $$ \text{GELU}(x) \approx 0.5 \cdot x \cdot\left(1+\tanh \left[\sqrt{(2 / \pi)}
# Listing 4.3 An implementation of the GELU activation function # Listing 4.3 An implementation of the GELU activation function
class GELU(nn.Module): class GELU(nn.Module):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
def forward(self, x): def forward(self, x):
return 0.5 * x * (1 + torch.tanh( return 0.5 * x * (1 + torch.tanh(
torch.sqrt(torch.tensor(2.0 / torch.pi)) * torch.sqrt(torch.tensor(2.0 / torch.pi)) *
(x + 0.044715 * torch.pow(x, 3)) (x + 0.044715 * torch.pow(x, 3))
)) ))
``` ```