这可能是一个非常简单的问题,但我无法找到直接解决这个问题的资源。我知道我一定理解错了;我不太确定怎么做。
我注意到,如果我的 LSTM 序列模型的最后一个密集输出层中的单元数不等于特征数(列),我会收到错误消息。
如果您想在输出(密集)层中输出 1 个要素,并且您有多个输入要素,您将如何:
- 做到这一点没有错误
- 确定正在输出哪个功能,或者 Keras 是否为每个功能提供输出,而您必须确定您想要哪个?
我想训练具有多个特征的模型,但我只对一个特征的预测感兴趣。
示例:我有“打开”、“低”、“高”、“关闭”和“体积”列(5 个特征)的数据。如果我将最后一个密集层中的单元数设置为 5 以外的任何值,我会收到一个广播错误,告诉我模型中的形状不一致。如果我在最后一个 Dense 输出层中放置 5 个单元,则不会出现错误。
例子:
def create_model(self, epochs, batch_size):
model = Sequential()
# Adding the first LSTM layer and some Dropout regularisation
model.add(LSTM(units=128, return_sequences=True,
batch_size=batch_size, input_shape=(TIME_STEP, self.X_train.shape[2])))
# Adding a second LSTM layer and some Dropout regularisation
model.add(LSTM(units=128, return_sequences=True))
model.add(Dropout(DROPOUT))
# Adding a third LSTM layer and some Dropout regularisation
model.add(LSTM(units=128, return_sequences=True))
model.add(Dropout(DROPOUT))
# Adding a fourth LSTM layer and some Dropout regularisation
model.add(LSTM(units=128, return_sequences=False))
model.add(Dropout(DROPOUT))
# Adding the output layer
model.add(Dense(units=5))
model.summary()
# compile model
adam = optimizers.Adam(lr=LR)
model.compile(optimizer=adam, loss='mae')
model.fit(self.X_train, self.y_train, epochs=EPOCHS, batch_size=BATCH_SIZE)
如果我在密集层中输入“units=1”,我会收到以下错误:
ValueError:形状 (11784,1) 的不可广播输出操作数与广播形状 (11784,5) 不匹配