Decoder transformer’ı tamamlama
Decoder transformer gövdesini oluşturma zamanı! Bu, daha önce oluşturduğun InputEmbeddings, PositionalEncoding ve DecoderLayer sınıflarını birleştirmek anlamına geliyor.
Bu egzersiz, kursun bir parçasıdır
PyTorch ile Transformer Modelleri
Egzersiz talimatları
- Liste üreteci ve
DecoderLayersınıfını kullanaraknum_layersadet decoder katmanından oluşan bir liste tanımla. - Gizli durumları sözcük olasılıklarına yansıtacak bir lineer katman tanımla.
__init__içinde tanımlanan katmanlar üzerinden ileri geçişi tamamla.- Bir decoder transformer oluştur ve
input_tokensiletgt_masküzerinde uygula.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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)