开始使用免费开始使用

完善解码器 Transformer

现在来构建解码器 Transformer 的主体!这将把您之前创建的 InputEmbeddingsPositionalEncodingDecoderLayer 类组合在一起。

本练习是课程的一部分

使用 PyTorch 的 Transformer 模型

查看课程

练习说明

  • 使用列表推导式和 DecoderLayer 类,定义由 num_layers 个解码器层组成的列表。
  • 定义一个线性层,将隐藏状态投影为各词的似然。
  • __init__ 中定义的各层上完成前向传播。
  • 实例化一个解码器 Transformer,并将其应用于 input_tokenstgt_mask

交互式实操练习

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

class TransformerDecoder(nn.Module):
    def __init__(self, vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length):
        super(TransformerDecoder, self).__init__()
        self.embedding = InputEmbeddings(vocab_size, d_model)
        self.positional_encoding = PositionalEncoding(d_model, max_seq_length)
        # Define the list of decoder layers and linear layer
        self.layers = nn.____([____(d_model, num_heads, d_ff, dropout) for _ in range(num_layers)])
        # Define a linear layer to project hidden states to likelihoods
        self.fc = ____
  
    def forward(self, x, tgt_mask):
        # Complete the forward pass
        x = self.____(x)
        x = self.____(x)
        for layer in self.layers:
            x = ____
        x = self.____(x)
        return F.log_softmax(x, dim=-1)

# Instantiate a decoder transformer and apply it to input_tokens and tgt_mask
transformer_decoder = ____(vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length)   
output = ____
print(output)
print(output.shape)
编辑并运行代码