pad sequenceを使ってtutorialのLSTMの例を書き換える試み
torch.nn.utils.rnn.pad_sequence
長さが異なるTensorをpaddingして長さを揃え、1つのTensorにまとめて返す
batch_first引数
output will be in B x T x * if True, or in T x B x * otherwise
デフォルトはFalse(返り値はT x B x *)
paddingに対応する語彙とラベルを増やす必要があった
torch.nn.Embeddingsのpadding_idx引数も設定
pad_sequenceによりDataLoaderのbatch_size引数が指定できるようになった🙌
しかし、batch_size=2では動かない(データが2件なので1か2しか取れない)
batch_size=2にすると、チュートリアルで文ごとに勾配をクリアするというコメントにも反してしまう
# Step 1. Remember that Pytorch accumulates gradients. We need to clear them out before each instance
👉batch_size=2では動かない理由、Tensorのサイズから考える
UserWarningに従ってDataLoaderのnum_workersを指定したところ、訓練がかえって遅くなった(と感じる)
ref: https://qiita.com/sugulu_Ogawa_ISID/items/62f5f7adee083d96a587#11-num_workers
how many subprocesses to use for data loading. 0 means that the data will be loaded in the main process. (default: 0) (DataLoaderのドキュメントより)