我正在使用以下Keras模型:
# Create Model self.model = Sequential() self.model.add(LSTM(50, return_sequences=True, input_shape=(features_set.shape[1], features_set.shape[2]))) self.model.add(Dropout(0.2)) self.model.add(LSTM(50, return_sequences=True)) self.model.add(Dropout(0.2)) self.model.add(LSTM(50)) self.model.add(Dropout(0.2)) self.model.add(Dense(1)) self.model.compile(optimizer = 'adam', loss = 'mean_squared_error')
features_set.shape
是 196,353,4
,而 labels.shape
是 196,353,1
。
然而,当紧接着调用以下代码时:
self.model.fit(features_set, labels, epochs = 1, batch_size = 1) self.model.reset_states()
我得到了以下错误:
预期dense_1应有2个维度,但得到的数组形状为(196, 353, 1)
最后一个LSTM层没有返回序列,那么这里发生了什么?我不明白自己哪里做错了。
回答:
模型构建错误,Dense层的输出是(196, 1),而你正在拟合的标签形状是(196,353,1)。
尝试这样做:
# Create Model self.model = Sequential() self.model.add(LSTM(50, return_sequences=True, input_shape=(features_set.shape[1], features_set.shape[2]))) self.model.add(Dropout(0.2)) self.model.add(LSTM(50, return_sequences=True)) self.model.add(Dropout(0.2)) self.model.add(LSTM(50, return_sequences=True)) self.model.add(Dropout(0.2)) self.model.add(Dense(1)) self.model.compile(optimizer = 'adam', loss = 'mean_squared_error')