で単純な LSTM 言語モデルを実装してPyTorch
いBucketIterator
ますtorchtext
。
返されたバッチのサイズはコーパス全体のサイズであることが判明したため、初期化中に何か間違ったことをしているに違いありません。
私はすでにBPTTIterator
作業を行っていますが、完全な文のバッチでもトレーニングできるようにしたいので、これが正しい方法だと思いましたBucketIterator
。
次のセットアップを使用します。私のコーパスは、各行に文を含む単純な txt ファイルです。
field = Field(use_vocab=True, batch_first=True)
corpus = PennTreebank('project_2_data/train_lines.txt', field)
field.build_vocab(corpus)
iterator = BucketIterator(corpus,
batch_size=64,
repeat=False,
sort_key=lambda x: len(x.text),
sort_within_batch=True,
)
この反復子からのバッチは shape を持つと予想しますが、(batch_size, max_len)
コーパス全体を shape の 1 つのテンソルに追加し(1, corpus_size)
ます。
セットアップに欠けているものは何ですか?
編集:PennTreebank
オブジェクトは a と互換性がないようです (ここに記載されているようBucketIterator
に、1 つしか含まれていませんhttp://mlexplained.com/2018/02/15/language-modeling-tutorial-in-torchtext-practical-torchtext-part-2 / )。1 だけで a を使用すると、機能しました。Example
TabularDataset
Field
パディングされた文のバッチを使用した言語モデリングをよりエレガントな方法で行う方法を誰かが知っている場合は、torchtext
ぜひ聞いてください!