RNN を使ったテキスト生成 - 学習と生成
PyBooks のチームは、与えられた入力から次の文字を予測して書名のオートコンプリートを行う RNN モデルを学習・テストしてほしいと考えています。このプロジェクトは、テキスト補完モデルのさらなる開発に役立ちます。
RNNmodel クラスの model インスタンスはあらかじめ読み込まれています。data 変数は前処理され、シーケンスとしてエンコードされています。
inputs と targets 変数もあらかじめ用意されています。
この演習はコースの一部です
PyTorch で学ぶテキストの Deep Learning
演習の手順
- 本モデルの誤差を計算するために使用する損失関数をインスタンス化します。
- PyTorch の最適化モジュールからオプティマイザをインスタンス化します。
- モデルを train モードに設定し、最適化ステップの前に勾配をゼロにして、学習プロセスを実行します。
- 学習後、サンプル入力でテストできるように、モデルを評価モードに切り替えます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Instantiate the loss function
criterion = nn.____()
# Instantiate the optimizer
optimizer = torch.optim.____(model.parameters(), lr=0.01)
# Train the model
for epoch in range(100):
model.____()
outputs = model(inputs)
loss = criterion(outputs, targets)
optimizer.____()
loss.backward()
optimizer.step()
if (epoch+1) % 10 == 0:
print(f'Epoch {epoch+1}/100, Loss: {loss.item()}')
# Test the model
model.____()
test_input = char_to_ix['r']
test_input = nn.functional.one_hot(torch.tensor(test_input).view(-1, 1), num_classes=len(chars)).float()
predicted_output = model(test_input)
predicted_char_ix = torch.argmax(predicted_output, 1).item()
print(f"Test Input: 'r', Predicted Output: '{ix_to_char[predicted_char_ix]}'")