2017-05-01 10 views
1

私はタグ付きの文章のリストを持っています。私は、次の方法でそれらのそれぞれを形質転換:各ワードについてKeras:POSタグ付けタスクの埋め込みレイヤーとLSTMレイヤー

  • 、相対ワンホットエンコード形式(寸法input_dimのベクトル)を取得します。
  • 以下の例で説明するように、プレパッディングを挿入します。
  • スプリットサイズtime_stepsのウィンドウを使用してlen(sentence)サブ文章中の各文、(次の単語を予測するためのコンテキストを取得します)。例えば

time_steps=2を使用して、単一の文が["this", "is", "an", "example"]に変換される:最後に

[ 
    [one_hot_enc("empty_word"), one_hot_enc("empty_word")], 
    [one_hot_enc("empty_word"), one_hot_enc("this")], 
    [one_hot_enc("this"), one_hot_enc("is")], 
    [one_hot_enc("is"), one_hot_enc("an")], 
] 

、一意のリストとしてサブ文を考慮し、X_train列データの形状が(num_samples, time_steps, input_dim)ありますここで、

  • input_dim:私の語彙のサイズ。
  • time_steps:LSTMに使用するシーケンスの長さ。
  • num_samples:サンプル(サブ文)の数。

は今、私は小さい連続次元空間に各単語をマッピングするために、Embedding層を使用したい、と私はコンテキストは、上記のように構築し使用するLSTM、。

私はこのような何か試してみました:

model = Sequential() 
model.add(InputLayer(input_shape=(time_steps, input_dim))) 
model.add(Embedding(input_dim, embedding_size, input_length=time_steps)) 
model.add(LSTM(32)) 
model.add(Dense(output_dim)) 
model.add(Activation('softmax')) 

をしかし、私は次のエラー与える:私は行方不明何

ValueError: Input 0 is incompatible with layer lstm_1: expected ndim=3, found ndim=4 

を?私がやろうとしていることには論理的な誤りがありますか?

答えて

1

あなたは、単に入力層を除去し、埋め込み層は、ネットワークの第1の層とすることができましょう。 または、入力層を "input_dim"のように削除して構築することもできます。

model.add(InputLayer(input_shape=(time_steps,))) 
関連する問題