Я новичок в использовании Keras и я экспериментировал с ним.Я построил следующую сеть, так как я пытаюсь понять опцию «с состоянием» в Keras LSTM.:
rdrop = 0.3
rdrop2 = 0
model = Sequential()
model.add(LSTM(1600, return_sequences=False, batch_input_shape=(n_win, L, N), stateful=True, dropout=rdrop))
model.add(Dense(1600, activation='linear'))
model.add(Dropout(0.4))
model.add(RepeatVector(L))
model.add(LSTM(1600, return_sequences=True, stateful=False, dropout=rdrop))
model.add(TimeDistributed(Dense(N, activation='softmax')))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])
с этими параметрами fit ():
for i in range(30):
model.fit(data_input3, data_input3,
shuffle=False,
epochs=1,
batch_size=n_win))
model.reset_states()
У меня есть неплохой результат, но я заметил, что чем больше я предсказываю (), тем хуже результат с использованиемтот же ввод.
Например, все результаты приведенного ниже кода различны, и чем больше он работает, тем хуже он получает.
t = np.zeros(100)
for i in range(100):
data_out2 = model.predict(data_input3[0:n_win, :, :], batch_size=n_win)
t = np.sum(np.abs(data_out2 - data_input3[0:n_win, :, :]))
Это не хороший способ для вычислениярасстояние, но когда я визуально проверяю результаты, после двойного вызова model.predict()
это начинает быть ужасно (первый раз приятно).
Есть ли какие-либо изменения в весах на этапе прогнозирования?Я проверил отсев и, похоже, он используется только на тренировках.Я проверил с Keras 2.2.3 и 2.2.4, оба работают с использованием TF 1.10
Заранее, спасибо за вашу помощь!