トランスフォーマーモデルの作成
PyBooks で取り組んでいるレコメンデーションエンジンは、ユーザーレビューの感情をより精緻に理解する必要があります。最先端のアーキテクチャであるトランスフォーマーを使えば、それが実現できると考えています。まずはレビューの感情をエンコードできるトランスフォーマーモデルを構築して、プロジェクトを始めましょう。
次のパッケージはすでにインポートされています:torch、nn、optim。
入力データには「I love this product」「This is terrible」「Could be better」などの文が含まれ、
それぞれに 1, 0, 0, ... のような二値の感情ラベルが対応します。
入力データは分割され、次の変数に埋め込みへ変換されています:
train_sentences、train_labels、test_sentences、test_labels、token_embeddings
この演習はコースの一部です
PyTorch で学ぶテキストの Deep Learning
演習の手順
- トランスフォーマーエンコーダーを初期化します。
- 感情クラス数に基づいて全結合層を定義します。
- forward メソッドで、入力をトランスフォーマーエンコーダーに通し、その後に線形層へ渡します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
class TransformerEncoder(nn.Module):
def __init__(self, embed_size, heads, num_layers, dropout):
super(TransformerEncoder, self).__init__()
# Initialize the encoder
self.encoder = nn.____(
nn.____(d_model=embed_size, nhead=heads),
num_layers=num_layers)
# Define the fully connected layer
self.fc = nn.Linear(embed_size, ____)
def forward(self, x):
# Pass the input through the transformer encoder
x = self.____(x)
x = x.mean(dim=1)
return self.fc(x)
model = TransformerEncoder(embed_size=512, heads=8, num_layers=3, dropout=0.5)
optimizer = optim.Adam(model.parameters(), lr=1e-3)
criterion = nn.CrossEntropyLoss()