#python #tensorflow #lstm
#питон #тензорный поток #lstm
Вопрос:
В моем проекте я использую модель RNN под названием LSTM для прогнозирования тенденции акций.
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 и испытываю трудности с настройкой формы модели. Заранее спасибо!
Комментарии:
1. Форма ваших данных не привязана к модели. Вы должны изменить либо данные, либо модель
2. Где в вашей функции вы вызываете
layers
? также, что у васX_train.shape
?3. @AlaTarighati Раньше в этой функции были слои. Я забыл его удалить. Это должно быть def build_model():
4. Мы с @AlaTarighati добавили больше содержимого моего кода, чтобы сделать описание вопроса более подробным. Вы можете прочитать это сейчас.