Как рассчитать и распечатать значения невидимых временных рядов для LSTM после обучения, действительных и тестовых данных - PullRequest
0 голосов
/ 20 сентября 2018

Мой набор данных - это данные временных рядов.Он содержит данные 10 пакетов.

trainX = (1410,3,15), trainY = (1410,1), testX = (110,3,15), testY = (110,1)

Входные данные представляют собой три векторных признака за последние три месяца, и я пытаюсь предсказать уязвимость 4-го месяца.У одного векторного объекта имеется 15 объектов.Я реализовал LSTM с состоянием.Я тренируюсь в партиях, помещая данные одного пакета в один пакет.

n_batch=141
# create and fit the LSTM network
model = Sequential()
model.add(LSTM(45, batch_input_shape=(n_batch, 3,15), stateful=True, 
return_sequences=True))
model.add(LSTM(45, batch_input_shape=(n_batch, 3,15), stateful=True, 
return_sequences=True))
model.add(LSTM(45, batch_input_shape=(n_batch, 3,15),stateful=True))
model.add(Dense(1, activation="relu"))
rmsprop = opt.RMSprop(lr=0.001)
model.compile(loss="mse", optimizer= rmsprop,metrics=['mse'])
model.summary()    

for i in range(1500):
history=model.fit(trainX12, trainY12, epochs=1, 
batch_size=n_batch,validation_split=0.1,verbose=2, shuffle=False)
model.reset_states()

#creating new model for test data
n_batch=11

new_model = Sequential()
new_model.add(LSTM(45, batch_input_shape=(n_batch, 3, 15), stateful=True, 
return_sequences=True))
new_model.add(LSTM(45, batch_input_shape=(n_batch, 3, 15), stateful=True, 
return_sequences=True))
new_model.add(LSTM(45, batch_input_shape=(n_batch, 3, 15),stateful=True))
new_model.add(Dense(1, activation="relu"))
rmsprop = opt.RMSprop(lr=0.001)
new_model.compile(loss="mse", optimizer= rmsprop)
new_model.summary()    

#setting weights
old_weights = model.get_weights()
new_model.set_weights(old_weights)

#predicting from the predictions themselves (gets the training data as input 
to set states)
new_model.reset_states()
#Prediction
testPredict= new_model.predict(testX12,batch_size=n_batch)
#printing history keys
print(history.history.keys())

#training and test loss
print(history.history['loss'])
history.history['val_loss']

plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()   

Проблемы:

  1. , когда я пытаюсь построить history['loss'] иhistory['val_loss'], он ничего не замышляет.Когда я печатаю оба, тогда это показывает только одно значение.Как я могу построить все значения потерь при обучении и тестировании?

  2. Как можно распечатать и рассчитать значения для будущего во время невидимых данных после обучения, тестирования и прогнозирования.Например, какова будет ценность уязвимости для этого пакета в ближайшие 6 или 9 месяцев.Как написать эту функцию?Может ли кто-нибудь сделать это волшебство для меня?

...