2017-07-19 144 views
2

爲什麼下面的代碼給出ValueError: Input 0 is incompatible with layer dense_14: expected min_ndim=2, found ndim=1?當我刪除unroll=True時,它是有效的,我不希望這會影響LSTM的輸出維度。展開時Keras不兼容的輸入尺寸LSTM

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

Python 2.7上的keras 2.0.5 – tba

回答

0

這似乎是發生是因爲unroll=True是不相關的(1, x)輸入形狀的bug in Keras