Проблема прогнозирования Keras (делает некоторые ошибочные прогнозы, а затем просто прогнозирует значение, близкое к 1) - PullRequest
0 голосов
/ 03 апреля 2019

Я бьюсь головой некоторое время.У меня куча проблем с этим и я не могу понять, что я делаю неправильно.Вот изображение прогнозируемого (красный) против фактического (синий):

enter image description here

Мой код следующий:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers import Dense
from keras.preprocessing.sequence import TimeseriesGenerator
from keras.optimizers import RMSprop
import inspect

data = pd.read_csv("D:\\School\\Spring_2019\\GraduateProject\\Stock Data\\AMZN.csv",header=0,usecols=['Date','Close'],index_col='Date',parse_dates=True)

# Data Scaling
scaler = MinMaxScaler()
data_s = scaler.fit_transform(data)
data_s

# Data Splitting into Train, Test, and Validation
trainLen = int(0.5*len(data_s))
train = data_s[0:trainLen,:]

valLen = int(0.25*len(data_s))
validation = data_s[trainLen:(trainLen+valLen),:]

test = data_s[trainLen+valLen:,:]

# Generators
trainGen = TimeseriesGenerator(data=train,targets=train,
                               length=1,sampling_rate=1,batch_size=1)

valGen = TimeseriesGenerator(data=validation,targets=validation,
                               length=1,sampling_rate=1,batch_size=1)

testGen = TimeseriesGenerator(data=test,targets=test,
                               length=1,sampling_rate=1,batch_size=1)

# Network Design
AMZN = Sequential()
AMZN.add(LSTM(256,input_shape=(1,1)))
AMZN.add(Dense(1,activation='sigmoid'))
AMZN.summary()

AMZN.compile(loss='mean_absolute_error',optimizer=RMSprop()) #,metrics=['accuracy']

# Model Fitting
epochSteps = int(trainLen/2)
epochSteps_v = int(valLen/2)
history = AMZN.fit_generator(trainGen,steps_per_epoch = trainLen,epochs=2,verbose=1,validation_data=valGen,validation_steps=epochSteps_v)

predicted = AMZN.predict_generator(testGen,verbose=1)
#test_r = np.reshape(test,(-1,1,1))
#predicted = AMZN.predict(test_r)
predicted

plt.plot(predicted,color='red')
plt.plot(test,color='blue')

Пожалуйста, дайте мне знать, если кто-нибудь из вас сможет выяснить, что происходит?Я буквально менял вещи влево и вправо, но продолжаю получать точно такой же результат.Неважно, 3 или 20 эпох.Все это началось, когда я попытался добавить второй слой LSTM к первому.Теперь я не могу понять, почему я получаю все эти проблемы.До сих пор я пытался изменить функцию потерь, оптимизатор, эпохи, я пытался избавиться от части проверки в подгонке модели. Есть идеи?Я очень ценю это заранее.

РЕДАКТИРОВАТЬ: В этом случае все работало правильно, но у меня также было следующее сообщение об ошибке:

Ошибка запуска Blas GEMM

...