可変長の一連のシーケンスがあり、過去の多くのトークンが与えられたときに次のトークンを予測するモデルを構築したいと思います。
問題は、可変長シーケンスでモデルをトレーニングするにはどうすればよいですか?
パディングは知っていますが、ウィンドウの長さを事前に指定しない方法はありますか?
batch_size = 1
の使用についても読みました
。この場合、train_Xとtrain_Yはどうあるべきですか?非常に長いシーケンスの最後のトークンのみをターゲットとして使用すると、その中のすべてのサブシーケンスを破棄するようなものです(つまり、0->1、0->2 .... 0->N-1)。 LSTMに供給する前に、これらすべてのサブシーケンスを手動で作成する必要がありますか?
回答 2 件
ケラスでは、入力図形を5つ必要としますが、同じサイズになるようにシーケンス(たとえば0で埋める)をパディングできます。
LSTMは3D入力を取ります:(batch_size、timesteps、features)。タイムステップは単語を表し、1つの単語の表現を特徴としています。 20語の文があり、文の各語が1000要素のOneHotベクトルとして表されているとします。単一の文の場合、入力形状は(1、20、1000)でなければなりません。これらの条件に合うようにデータを手動で前処理することも、kerasで事前に構築された関数を使用して作業を行うこともできます。これらの機能はすべてここで見つけることができます:https://keras.io/preprocessing/text/
関連した質問
- Kerasによる機能畳み込み
- フィット中のtensorflowkeras:無効な引数Reshapeへの入力は983040値のテンソルですが、要求された形状は1966080を持っています
- モデルが同じラベルを予測するのはなぜですか?
- Keras Multiclass Classification(高密度モデル):混同マトリックスが正しくない
- クロスエントロピー損失とロジスティック損失の間に違いはありますか?
- ケラス画像増強:画像の幅/高さのシフト範囲に複数の値を指定する
- keras:2つの画像を入力として連結します(DeepVO)
- keras activation function layer:modeladd Activation( 'relu')は無効な構文を与えます
- tensorflow 220でCNNモデルフィッティングの問題を解決するにはどうすればよいですか?
はい、Kerasで可変長の入力を指定できます。つまり、
input_shape=(None, features)
を指定します。 ここで、None
示すわからない タイムステップの数。モデルの例を次に示します。重要な点は、テンソル操作のためにバッチ内のセンテンスをパディングする必要があるが、実際には、異なるバッチが異なるタイムステップ数を持ち、モデルがさまざまな長さのセンテンスを処理できるようにすることです。