From 22e6d87ad936601632c80e280ad5ad39169ddadb Mon Sep 17 00:00:00 2001 From: skindhu Date: Tue, 5 Nov 2024 17:23:49 +0800 Subject: [PATCH] add fourth chapter --- ...从零开始实现一个用于文本生成的 GPT 模型.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/cn-Book/4.从零开始实现一个用于文本生成的 GPT 模型.md b/cn-Book/4.从零开始实现一个用于文本生成的 GPT 模型.md index d1d4bab..e5592c1 100644 --- a/cn-Book/4.从零开始实现一个用于文本生成的 GPT 模型.md +++ b/cn-Book/4.从零开始实现一个用于文本生成的 GPT 模型.md @@ -296,17 +296,17 @@ print("Variance:\n", var) ```python Normalized layer outputs: - 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]], - grad_fn=) + 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]], + grad_fn=) Mean: - tensor([[2.9802e-08], - [3.9736e-08]], grad_fn=) + tensor([[2.9802e-08], + [3.9736e-08]], grad_fn=) Variance: - tensor([[1.], - [1.]], grad_fn=) + tensor([[1.], + [1.]], grad_fn=) ``` 请注意,输出张量中的值`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("Variance:\n", var) Mean: - tensor([[ 0.0000], - [ 0.0000]], grad_fn=) + tensor([[ 0.0000], + [ 0.0000]], grad_fn=) Variance: - tensor([[1.], - [1.]], grad_fn=) + tensor([[1.], + [1.]], grad_fn=) ``` 在本节内容中,我们已逐步实现并应用了层归一化。现在将这个过程封装到一个 PyTorch 模块中,以便后续在 GPT 模型中使用。 @@ -366,11 +366,11 @@ print("Variance:\n", var) ```python Mean: - tensor([[ -0.0000], - [ 0.0000]], grad_fn=) + tensor([[ -0.0000], + [ 0.0000]], grad_fn=) Variance: - tensor([[1.0000], - [1.0000]], grad_fn=) + tensor([[1.0000], + [1.0000]], grad_fn=) ``` 在本节中,我们介绍了实现 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 class GELU(nn.Module): def __init__(self): - super().__init__() + super().__init__() def forward(self, x): return 0.5 * x * (1 + torch.tanh( - torch.sqrt(torch.tensor(2.0 / torch.pi)) * - (x + 0.044715 * torch.pow(x, 3)) + torch.sqrt(torch.tensor(2.0 / torch.pi)) * + (x + 0.044715 * torch.pow(x, 3)) )) ```