Keras: ValueError: Input 0 is incompatible layer issues
Keras: ValueError: Input 0 is incompatible layer issues
我正在使用带有 Tensorflow 的 Keras 作为后端并出现不兼容的错误:
model = Sequential()
model.add(LSTM(64, input_dim = 1))
model.add(Dropout(0.2))
model.add(LSTM(16))
显示如下错误:
Traceback (most recent call last):
File "train_lstm_model.py", line 36, in <module>
model.add(LSTM(16))
File "/home/***/anaconda2/lib/python2.7/site-packages/keras/models.py", line 332, in add
output_tensor = layer(self.outputs[0])
File "/home/***/anaconda2/lib/python2.7/site-packages/keras/engine/topology.py", line 529, in __call__
self.assert_input_compatibility(x)
File "/home/***/anaconda2/lib/python2.7/site-packages/keras/engine/topology.py", line 469, in assert_input_compatibility
str(K.ndim(x)))
ValueError: Input 0 is incompatible with layer lstm_2: expected ndim=3, found ndim=2
我该如何解决这个问题?
凯拉斯版本:1.2.2
张量流版本:0.12
LSTM
层正在接受 (len_of_sequences, nb_of_features)
形状的输入。您提供的输入形状仅为 1-dim
,因此这是错误的来源。错误消息的确切形式来自数据的实际形状包括 batch_size
这一事实。因此,馈送到该层的数据的实际形状是 (batch_size, len_of_sequences, nb_of_features)
。您的形状是 (batch_size, 1)
,这就是 3d
与 2d
输入背后的原因。
此外 - 您可能对第二层有类似的问题。为了使您的 LSTM
层成为 return 序列,您应该将其定义更改为:
model.add(LSTM(64, input_shape = (len_of_seq, nb_of_features), return_sequences=True)
或:
model.add(LSTM(64, input_dim = nb_of_features, input_len = len_of_sequence, return_sequences=True)
我正在使用带有 Tensorflow 的 Keras 作为后端并出现不兼容的错误:
model = Sequential()
model.add(LSTM(64, input_dim = 1))
model.add(Dropout(0.2))
model.add(LSTM(16))
显示如下错误:
Traceback (most recent call last):
File "train_lstm_model.py", line 36, in <module>
model.add(LSTM(16))
File "/home/***/anaconda2/lib/python2.7/site-packages/keras/models.py", line 332, in add
output_tensor = layer(self.outputs[0])
File "/home/***/anaconda2/lib/python2.7/site-packages/keras/engine/topology.py", line 529, in __call__
self.assert_input_compatibility(x)
File "/home/***/anaconda2/lib/python2.7/site-packages/keras/engine/topology.py", line 469, in assert_input_compatibility
str(K.ndim(x)))
ValueError: Input 0 is incompatible with layer lstm_2: expected ndim=3, found ndim=2
我该如何解决这个问题?
凯拉斯版本:1.2.2 张量流版本:0.12
LSTM
层正在接受 (len_of_sequences, nb_of_features)
形状的输入。您提供的输入形状仅为 1-dim
,因此这是错误的来源。错误消息的确切形式来自数据的实际形状包括 batch_size
这一事实。因此,馈送到该层的数据的实际形状是 (batch_size, len_of_sequences, nb_of_features)
。您的形状是 (batch_size, 1)
,这就是 3d
与 2d
输入背后的原因。
此外 - 您可能对第二层有类似的问题。为了使您的 LSTM
层成为 return 序列,您应该将其定义更改为:
model.add(LSTM(64, input_shape = (len_of_seq, nb_of_features), return_sequences=True)
或:
model.add(LSTM(64, input_dim = nb_of_features, input_len = len_of_sequence, return_sequences=True)