2017-07-19 11 views
2

なぜ次のコードがValueError: Input 0 is incompatible with layer dense_14: expected min_ndim=2, found ndim=1になるのですか? unroll=Trueを削除したときに動作します。これは、LSTMの出力ディメンションには影響しないと予想されるパラメータです。LSTMをアンロールする際のKerasの互換性のない入力寸法

from keras.models import Sequential 
from keras.layers import LSTM, Dense 
model = Sequential() 
model.add(LSTM(
    100, 
    batch_input_shape=(1, 1, 17), 
    unroll=True 
)) 
model.add(Dense(1)) 

私はこれに関係しているとします

In [9]: from keras.models import Sequential 
    ...: from keras.layers import LSTM, Dense 
    ...: from keras import backend as K 
    ...: def LSTM_output_dimensions(*args,**kwargs): 
    ...: model = Sequential() 
    ...: model.add(LSTM(
    ...:  *args, 
    ...:  **kwargs 
    ...: )) 
    ...: return K.ndim(model.outputs[0]) 
    ...: 

In [10]: LSTM_output_dimensions(50, batch_input_shape=(1, 1, 17)) 
Out[10]: 2 

In [11]: LSTM_output_dimensions(50, batch_input_shape=(1, 1, 17),return_sequences=True) 
Out[11]: 3 

In [12]: LSTM_output_dimensions(50, batch_input_shape=(1, 1, 17),unroll=True) 
Out[12]: 1 

In [13]: LSTM_output_dimensions(50, batch_input_shape=(1, 1, 17),unroll=True,return_sequences=True) 
Out[13]: 2 
+0

どの 'Keras'バージョンを使用していますか? –

+0

keras 2.0.5 on Python 2.7 – tba

答えて

0

これはunroll=True(1, x)の入力形状に関連しないために発生bug in Kerasように見えます。

関連する問題