3

で単純な LSTM 言語モデルを実装してPyTorchBucketIteratorます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 を使用すると、機能しました。ExampleTabularDatasetField

パディングされた文のバッチを使用した言語モデリングをよりエレガントな方法で行う方法を誰かが知っている場合は、torchtextぜひ聞いてください!

4

0 に答える 0