我明白这个问题已经被问了一遍又一遍,但我尝试了所有可能的解决方案,但我似乎无法摆脱这个错误
我正在尝试使用下面的层预测股票价格,基于27个特征的数据库,1012个样本用于训练,125个样本用于测试。 -x_列车形状:(1012,4,27) -y_列车形状:(1012,)
我正在使用以下代码:
def Dynamic_Trainer(rate, activ1, activ2):
lstm_model = Sequential()
lstm_model.add(LSTM(26, batch_input_shape=(BATCH_SIZE, TIME_STEPS, X_train.shape[2]), dropout=0.0, recurrent_dropout=0.0,
stateful=True, kernel_initializer='random_uniform', return_sequences=True))
lstm_model.add(Dropout(rate))
lstm_model.add(Dense(26, activation=activ1))
lstm_model.add(Dropout(rate))
lstm_model.add(Dense(1, activation=activ2))
lstm_model.compile(loss='mean_squared_error', optimizer='rmsprop')
print('XTRAIN:', X_train.shape)
print('YTRAIN', y_train.shape)
# Initializing The Training
Dynamic_Trainer.history = lstm_model.fit(X_train, y_train, epochs=EPOCHS, verbose=2, batch_size=BATCH_SIZE,
shuffle=False, validation_data=(Reformat_Matrix(x_val, BATCH_SIZE),
Reformat_Matrix(y_val, BATCH_SIZE)))
我得到这个错误:ValueError: Error when checking target: expected dense_2 to have 3 dimensions, but got array with shape (1012, 1)
我不明白我做错了什么,因为当我打印我得到的形状时: x_列车:(1012、4、27) y_列车:(1012) 据我所知,这是正确的形状
罪魁祸首是
return_sequences=True
。使用它True
它将返回张量秩3,可能是(1012, TIME_STEPS, 26)
,您可以将它放到另一个RNN层但是这里您想直接转到输出,所以将其更改为
False
从注释来看,似乎您有多个
LSTM
,最后一个需要return_sequences=False
将秩2张量作为输出,错误日志中的(1012, 1)
,而其他需要return_sequences=True
将张量作为秩3返回下一个RNN层相关问题 更多 >
编程相关推荐