以前にもちょこっと書いたのだけど、自然言語はたいてい次元(単語数、文字数など)が合わない。 データA 1 2 データB 1 2 3 こんな感じで次元が合っていないデータをミニバッチで学習したい。 末尾をEOSで埋めてミニバッチ 可変長のミニバッチの時に末尾をEOSで埋めてそのまま学習するとまずいのでwhereを使うといいらしい。以前から挑戦していたのだけれどもなかなかうまくいかず、先日ようやく中の人にtwitterで教えてもらって出来ました。 まず末尾を0や-1など特殊なもので埋めて次元を固定する。仮に0をEOSに該当するIDだとしたらこのように埋められる。これでAもBも4次元で揃った。 データA 1 2 0 0 データB 1 2 3 0 転置(numpyの.T)したらそのまま入力に使える形式になってくれる。 A B 1 1 2 2 0 3 0 0 実際のコードだとこう。 a = nump