Входные данные здесь - 3. Выходные данные здесь (LSTM) - вероятности, которыми должен быть следующий x1 вход.Значит здесь у меня есть входные значения х1х2 и х3.Первые три входа LSTM output1, а затем следующий, если значение x1 = 0, тогда Lstm output1 возвращается в качестве входа и прогнозирует следующий выход2.Если это значение выхода 2 равно следующему значению x1, вернитесь к нему как к входу и предскажите выход 3. Если не равно, не принимать выход 2 как вход x1 и принимайте его как упомянутый вход x1.Выход (Yt) на временном шаге t зависит от входа X1t и от предыдущего выхода Yt-1.в качестве примера
x1 x2 x3 predict (output)
100 30 40 120
0 20 10 130
140 15 30 160
здесь второе значение столбца x1 равно 0, значение x1 = 0, затем примите значение в качестве вывода 1
x1 = output1
здесь столбец x1 3-е значение измерено и выведено 2значение не равно x1 3-го значения.затем принять входные данные в качестве измеренного значения.Так что это метод, который я хочу сделать.Но я не знаю, как это написать.Может кто-нибудь поможет мне сделать это?мой код LSTM:
fit1 = Sequential ()
fit1.add(LSTM(32, return_sequences=True, activation='relu',input_shape=(3,1)))
fit1.add((LSTM(32, return_sequences=True)))
fit1.add(LSTM(32))
fit1.add(Dense(1))
batchsize = 3
fit1.compile(loss="mean_squared_error",optimizer="adam")
fit1.fit(x_train , y_train , batch_size = batchsize, nb_epoch =10,shuffle=True)
pred1=fit1.predict(x_test)
for i in range(len(x)):
pred1.append(fit1.predict([x[i,None,:],pred1[i]]))
pred1 = np.asarray(pred1)
pred1 = pred1.reshape(pred1.shape[0],pred1.shape[2])
Но это не работает.нет связи между входом и выходом.
ошибка:
После изменения кода:
for i in range(len(x)):
pred1 = np.append(pred1, fit1.predict([x[i,None,:],pred1[i]]))
pred1 = np.asarray(pred1)
pred1 = pred1.reshape(pred1.shape[0],pred1.shape[2])
ошибка:
Другой пример: здесь у меня есть три входных данных x1, x2, x3 с временными рядами.Я хочу прогнозировать значение в каждом часе.(в момент времени t + 1) У меня есть столбец y, в котором я получаю значение каждые один час (t + 1).Но иногда я измерял значение через два часа.Таким образом, между прошедшим временем и настоящим временем есть значение, не измеренное в момент времени t + 1.Поэтому я буду предсказывать значение, которое я не измерял при t + 1.Здесь значение x1 зависит от выходного значения (y) при t + 1.Когда я предсказываю значение в этот период времени, принимаю его за y1 (t + 1), это значение должно считываться как значение x1 как x1 (t), чтобы предсказать следующее выходное значение при t + 1 (y2).Если я измерил это значение в момент времени t + 1, если мое прогнозируемое значение == измеренное значение, прочитайте его как x1 (t), чтобы предсказать следующее значение в момент времени t + 1.Это процесс, который я хочу написать как код.Вот пример:
time x1(t) x2(t) x3(t) y(t+1)
6:00:00 120 0 0 110 (I measured it at t+1)
, когда я прогнозирую это с помощью LSTM, если это значение == измеренное значение (t + 1), считайте его как второе входное значение столбца x1 (t).если не равно, считайте измеренное значение как второе входное значение x1 (t).SO
7:00:00 110 40 10 0 (not measured value at t+1)
Затем я прогнозирую значение при t + 1 = y2, предположим, что пришло 70, тогда значение y2 (t + 1) будет третьим входом столбца x1 как x1 (t).Так что
8:00:00 70 0 30 200 (I measured value at t+1)
это процесс, который я хочу запустить с помощью LSTM.