开始使用免费开始使用

开始编写 MultiHeadAttentionClass

您已经为构建词元嵌入和位置嵌入定义了类,现在该为多头注意力定义一个类了。首先,设置用于注意力计算的参数,并定义用于将输入嵌入转换为查询、键和值矩阵的线性层,以及一个用于将合并后的注意力结果投影回嵌入空间的输出线性层。

torch.nn 已以 nn 导入。

本练习是课程的一部分

使用 PyTorch 的 Transformer 模型

查看课程

练习说明

  • 计算每个注意力头要处理的嵌入维度 head_dim
  • 定义三个输入层(用于 query、key 和 value)以及一个输出层;对输入层去掉偏置参数。

交互式实操练习

通过完成这段示例代码来试试这个练习。

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super().__init__()
        # Calculate the dimensions each head will process
        self.num_heads = num_heads
        self.d_model = d_model
        self.head_dim = ____
        # Define the three input layers and one output layer
        self.query_linear = nn.Linear(____, ____, bias=False)
        self.key_linear = nn.Linear(____)
        self.value_linear = ____
        self.output_linear = ____
编辑并运行代码