ValueError:检查目标时出错:预期稠密_2有3维,但得到了形状为(1012,1)的数组

2024-10-02 10:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我明白这个问题已经被问了一遍又一遍,但我尝试了所有可能的解决方案,但我似乎无法摆脱这个错误

我正在尝试使用下面的层预测股票价格,基于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) 据我所知,这是正确的形状


Tags: addsizemodelrate错误batchtraindynamic
1条回答
网友
1楼 · 发布于 2024-10-02 10:30:28

罪魁祸首是return_sequences=True。使用它True它将返回张量秩3,可能是(1012, TIME_STEPS, 26),您可以将它放到另一个RNN层

但是这里您想直接转到输出,所以将其更改为False

从注释来看,似乎您有多个LSTM,最后一个需要return_sequences=False将秩2张量作为输出,错误日志中的(1012, 1),而其他需要return_sequences=True将张量作为秩3返回下一个RNN层

相关问题 更多 >

    热门问题