시계열을 예측하기 위해 keras
LSTM을 만들려고합니다. 내 x_train은 3000,15,10 (예, Timesteps, 기능), 3000, 15,1과 같은 y_train과 같은 많은 모델 (시퀀스 당 10 개의 입력 기능으로 1 개의 출력/시퀀스 만들기)을 구축하려고합니다.Keras - 예기치 않은 예측 결과
내가 사용하는 코드는 이것이다 :
model = Sequential()
model.add(LSTM(
10,
input_shape=(15, 10),
return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(
100,
return_sequences=True))
model.add(Dropout(0.2))
model.add(Dense(1, activation='linear'))
model.compile(loss="mse", optimizer="rmsprop")
model.fit(
x_train, y_train,
batch_size=1, nb_epoch=1, validation_split=0.05)
predicted = model.predict(x_test)
내 데이터는 다음과 같습니다
x_train = [
[
[3,4,3,1.5,0,7....], # 10 Features
[2,4,1,1,4,3....],
.... # 15 Timesteps
],
.... # 3000 Examples
]
y_train = [
[
[0],
[5],
....
],
.....
]
코드는 컴파일하고 오류없이 적합하지만 예측 값은 사실이 아니다.
예상 값은 0과 ~ 15 사이의 정수입니다. 그러나 예측은 ~ -0.03과 1 사이의 수레입니다. 또한 예측에는 15 개의 시간 단계가 있지만 실제로는 16 번째 시간 단계 (예측 된 미래 결과)에 관심이 있습니다.
예 예측 :
predicted = [
[
[0.035478],
[0.046423],
[0.948723],
....
],
....
]
내 keras
버전은 2.0.6이고 python
버전 3.4.5입니다.
도움을 주시면 대단히 감사하겠습니다.
좋아, 고마워, 난이 시도됩니다. 16 번째 예측을 가져 오는 방법을 알고 있습니까? – sbz
x_test에 대한 예측을 했으므로 x_test에 16 번째 timestep이 있는지 확인하십시오. – Mark
감사합니다. 데이터를 0에서 1 사이의 크기로 조정 했으므로 모든 결과가 훨씬 현실적으로 보입니다.나는 또한 그것을 생각하고 나는 단지 15 개의 타임 스텝을 고수 할 것이지만 마지막 입력 타임 스텝을 자르고 처음에 빈 것을 삽입함으로써 입력과 결과를 이동시킨다. 따라서 모든 x 값은 다음 y 값에 해당합니다. 그러나 모든 결과에 대해 동일한 숫자 (~ 0.018)를 주로 받음에 따라 결과가 올바르지 않습니다. 그게 뭔지 알아? – sbz