Keras 1.0 を使用しています。私の問題はこれ ( Keras で Mean Pooling レイヤーを実装する方法) と同じですが、そこにある答えは私にとって十分ではないようです。
次のコードは機能しません。
sequence = Input(shape=(max_sent_len,), dtype='int32')
embedded = Embedding(vocab_size, word_embedding_size)(sequence)
lstm = LSTM(hidden_state_size, activation='sigmoid', inner_activation='hard_sigmoid', return_sequences=True)(embedded)
pool = AveragePooling1D()(lstm)
output = Dense(1, activation='sigmoid')(pool)
を設定しないとreturn_sequences=True
、 を呼び出すと次のエラーが発生しますAveragePooling1D()
。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/PATH/keras/engine/topology.py", line 462, in __call__
self.assert_input_compatibility(x)
File "/PATH/keras/engine/topology.py", line 382, in assert_input_compatibility
str(K.ndim(x)))
Exception: ('Input 0 is incompatible with layer averagepooling1d_6: expected ndim=3', ' found ndim=2')
そうしないと、次の呼び出し時にこのエラーが発生しますDense()
。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/PATH/keras/engine/topology.py", line 456, in __call__
self.build(input_shapes[0])
File "/fs/clip-arqat/mossaab/trec/liveqa/cmu/venv/lib/python2.7/site-packages/keras/layers/core.py", line 512, in build
assert len(input_shape) == 2
AssertionError