translationmodel / app /encoder.py
Rohit2sali's picture
Initial commit with LFS model
4d4387e
Raw History Blame Contribute Delete
1.09 kB
import torch.nn as nn
from Attention import MultiHeadAttention
class Encoder(nn.Module):
def __init__(self, d_model, n_heads, fnn_hidden_dim): # input must be str or list of str
super(Encoder, self).__init__()
self.d_model = d_model
self.n_heads = n_heads
self.attention = MultiHeadAttention(d_model)
self.fnn = nn.Sequential(
nn.Linear(d_model, fnn_hidden_dim),
nn.ReLU(),
nn.Dropout(0.1),
nn.Linear(fnn_hidden_dim, d_model)
)
self.layernorm1 = nn.LayerNorm(d_model)
self.layernorm2 = nn.LayerNorm(d_model)
def forward(self, embedding_output, padding_mask):
x = self.layernorm1(embedding_output)
attention_output = self.attention(x, x, x, padding_mask, lookahead_mask=None, n_heads=self.n_heads)
attention_output = embedding_output + attention_output
layernorm_output = self.layernorm2(attention_output)
fnn_output = self.fnn(layernorm_output)
output = fnn_output + attention_output
return output