ValueError: Error when checking target: expected dense_2 to have 3 dimensions, but got array with shape (1012, 1)
ValueError: Error when checking target: expected dense_2 to have 3 dimensions, but got array with shape (1012, 1)
我知道这个问题已经被问了一遍又一遍,但我尝试了所有可能的解决方案,但我似乎无法摆脱这个错误。
我正在尝试根据包含 27 个特征、1012 个训练样本和 125 个测试样本的数据库,使用下面的层来预测股票价格。
- x_train.shape: (1012, 4, 27)
- y_train.shape: (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_train: (1012, 4, 27)
y_train: (1012,)
据我所知这是正确的形状。
return_sequences=True
是罪魁祸首。有了它 True
它将 return 张量等级 3,也许 (1012, TIME_STEPS, 26)
,你可以把它放到另一个 RNN 层。
但是这里你想直接输出所以把这个改成False
。
从评论来看,您似乎有多个 LSTM
,最后一个需要 return_sequences=False
才能将 2 阶张量作为输出,错误日志中的 (1012, 1)
,而其他需要 return_sequences=True
到 return 张量作为下一个 RNN 层的等级 3。
我知道这个问题已经被问了一遍又一遍,但我尝试了所有可能的解决方案,但我似乎无法摆脱这个错误。
我正在尝试根据包含 27 个特征、1012 个训练样本和 125 个测试样本的数据库,使用下面的层来预测股票价格。 - x_train.shape: (1012, 4, 27) - y_train.shape: (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_train: (1012, 4, 27) y_train: (1012,) 据我所知这是正确的形状。
return_sequences=True
是罪魁祸首。有了它 True
它将 return 张量等级 3,也许 (1012, TIME_STEPS, 26)
,你可以把它放到另一个 RNN 层。
但是这里你想直接输出所以把这个改成False
。
从评论来看,您似乎有多个 LSTM
,最后一个需要 return_sequences=False
才能将 2 阶张量作为输出,错误日志中的 (1012, 1)
,而其他需要 return_sequences=True
到 return 张量作为下一个 RNN 层的等级 3。