在我的项目中,我使用一个名为LSTM的RNN模型来预测股票的走势
def standard_scaler(Xtraining, Xtesting):
trainSamples= Xtraining.shape
trainx=Xtraining.shape
trainy=Xtraining.shape
testSamples= Xtesting.shape
testx=Xtesting.shape
testy=Xtesting.shape
Xtraining = Xtraining.reshape((trainSamples, trainx * trainy))
Xtesting = Xtesting.reshape((testSamples, testx * testy))
preprocessor = prep.StandardScaler().fit(Xtraining)
Xtraining = preprocessor.transform(Xtraining)
Xtesting = preprocessor.transform(Xtesting)
Xtraining = Xtraining.reshape((trainSamples, trainx, trainy))
Xtesting = Xtesting.reshape((testSamples, testx, testy))
return Xtraining, Xtesting
def preprocess_data(stocks, sequenceLength2):
AmountofFeatures = len(stocks.columns)
data = stocks.values
sequenceLength = sequenceLength2 + 1
result = []
for index in range(len(data) - sequenceLength):
result.append(data[index : index + sequenceLength])
result = np.array(result)
row = round(0.9 * result.shape[0])
train = result[: int(row), :]
train = standard_scaler(train, result)
result = standard_scaler(train, result)
Xtraining = train[:, : -1]
Ytraining = train[:, -1][: ,-1]
Xtesting = result[int(row) :, : -1]
Ytesting = result[int(row) :, -1][ : ,-1]
Xtraining = np.reshape(Xtraining, (Xtraining.shape[0], Xtraining.shape[1], AmountofFeatures))
Xtesting = np.reshape(Xtesting, (Xtesting.shape[0], Xtesting.shape[1], AmountofFeatures))
return Xtraining, Ytraining, Xtesting, Ytesting
def build_model():
model = Sequential()
model.add(LSTM(units=100,input_shape=(10,1),return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(100, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(units=1))
start = time.time()
model.compile(loss="mse", optimizer="rmsprop", metrics=['accuracy'])
print("Compilation Time : ", time.time() - start)
return model
我建立了一个LSTM模型,试图绘制模型。我检查代码时没有错误
window = 20
X_training, y_training, X_testing, y_testing = preprocess_data(data[:: -1], window)
model = build_model([X_training.shape[2], window, 100, 1])
model.fit(X_training, y_training, epochs=2, batch_size=500,verbose=0)
plt.plot(pred, color='red', label='Prediction')
plt.plot(y_testing, color='blue', label='Ground Truth')
plt.legend(loc='upper left')
plt.show()
但是,正如我在标题中提到的,这个错误突然出现了
ValueError: Input 0 is incompatible with layer sequential_20: expected shape=(None, None, 1), found shape=[None, 20, 5]
Spyder console表示,问题来自这一声明
model.fit(X_training, y_training, epochs=2, batch_size=500,verbose=0)
有人能告诉我如何修理model.fit吗?我是LSTM模型的新手,很难调整模型的形状。提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐