Шар encoder-трансформера
Маючи визначений клас FeedForwardSubLayer, ви маєте всі складники, щоб оголосити клас EncoderLayer. Нагадаємо, що шар encoder зазвичай складається з механізму багатоголової уваги та підшару прямого поширення з нормалізацією шару і dropоut на входах і виходах підшару.
Класи, які ви вже оголосили, доступні з тими самими назвами, а також доступні torch і torch.nn як nn.
Ця вправа є частиною курсу
Моделі Transformer з PyTorch
Інструкції до вправи
- Доповніть метод
__init__, створивши екземпляриMultiHeadAttention,FeedForwardSubLayerі двох нормалізацій шару. - Завершіть метод
forward(), заповнивши виклики механізму багатоголової уваги та підшару прямого поширення; для механізму уваги використайте наданийsrc_markі вхідні вкладенняxяк матриці query, key і value.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
class EncoderLayer(nn.Module):
def __init__(self, d_model, num_heads, d_ff, dropout):
super().__init__()
# Instantiate the layers
self.self_attn = ____(d_model, num_heads)
self.ff_sublayer = ____(d_model, d_ff)
self.norm1 = ____
self.norm2 = ____
self.dropout = nn.Dropout(dropout)
def forward(self, x, src_mask):
# Complete the forward method
attn_output = self.____
x = self.norm1(x + self.dropout(attn_output))
ff_output = self.____
x = self.norm2(x + self.dropout(ff_output))
return x