PyTorch के साथ Transformer Models
James Chapman
Curriculum Manager, DataCamp



Transformer body: N एन्कोडर लेयर्स वाला एन्कोडर स्टैक
Encoder layer
- मल्टी-हेड self-attention
- फीड-फॉरवर्ड (सब)लेयर्स
- लेयर नॉर्मलाइजेशन, ड्रॉपआउट्स
Transformer head

Transformer body: N एन्कोडर लेयर्स वाला एन्कोडर स्टैक
Encoder layer
- मल्टी-हेड self-attention
- फीड-फॉरवर्ड (सब)लेयर्स
- लेयर नॉर्मलाइजेशन, ड्रॉपआउट्स
Transformer head: एन्कोडेड इनपुट्स को प्रोसेस कर आउटपुट प्रेडिक्शन बनाता है
Supervised task: क्लासिफिकेशन, रिग्रेशन

class FeedForwardSubLayer(nn.Module): def __init__(self, d_model, d_ff): super().__init__() self.fc1 = nn.Linear(d_model, d_ff) self.fc2 = nn.Linear(d_ff, d_model) self.relu = nn.ReLU()def forward(self, x): return self.fc2(self.relu(self.fc1(x)))
2 x फुली कनेक्टेड + ReLU एक्टिवेशन
d_ff: लीनियर लेयर्स के बीच का डायमेंशन
forward(): अटेंशन आउटपुट्स को प्रोसेस कर जटिल, नॉन-लीनियर पैटर्न पकड़ता है
class EncoderLayer(nn.Module): def __init__(self, d_model, num_heads, d_ff, dropout): super().__init__() self.self_attn = MultiHeadAttention(d_model, num_heads) self.ff_sublayer = FeedForwardSubLayer(d_model, d_ff)self.norm1 = nn.LayerNorm(d_model) self.norm2 = nn.LayerNorm(d_model) self.dropout = nn.Dropout(dropout)def forward(self, x, src_mask): attn_output = self.self_attn(x, x, x, src_mask) x = self.norm1(x + self.dropout(attn_output)) ff_output = self.ff_sublayer(x) x = self.norm2(x + self.dropout(ff_output)) return x

forward():
mask padding टोकन्स की प्रोसेसिंग रोकता है

class TransformerEncoder(nn.Module): def __init__(self, vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length): super().__init__()self.embedding = InputEmbeddings(vocab_size, d_model)self.positional_encoding = PositionalEncoding(d_model, max_seq_length)self.layers = nn.ModuleList( [EncoderLayer(d_model, num_heads, d_ff, dropout) for _ in range(num_layers)] )def forward(self, x, src_mask): x = self.embedding(x) x = self.positional_encoding(x) for layer in self.layers: x = layer(x, src_mask) return x
class ClassifierHead(nn.Module):
def __init__(self, d_model, num_classes):
super().__init__()
self.fc = nn.Linear(d_model, num_classes)
def forward(self, x):
logits = self.fc(x)
return F.log_softmax(logits, dim=-1)
class RegressionHead(nn.Module):
def __init__(self, d_model, output_dim):
super().__init__()
self.fc = nn.Linear(d_model, output_dim)
def forward(self, x):
return self.fc(x)
Classification head
fc: फुली कनेक्टेड लीनियर लेयरnum_classes क्लास probabilities में बदलता हैRegression head
output_dim 1 होता हैPyTorch के साथ Transformer Models