Последовательность прогнозирования тензорного потока - PullRequest
0 голосов
/ 01 декабря 2018

Итак, моя задача - предсказать последовательность.У меня есть значения x, y, z в момент времени t, которые имеют тип float.Я должен предсказать последовательность, которая имеет значения x, y, z во время (t + 1).

TIME_STEP = 10
N_FEATURES = N_CLASSES = 3
LEARNING_RATE = 0.01
EPOCHS = 50
BATCH_SIZE = 10

x = tf.placeholder(tf.float32, shape = [None, N_FEATURES], name = 'name')
y = tf.placeholder(tf.float32, shape = [N_CLASSES], name = 'labels')

, тогда у меня есть моя модель lstm, которая выглядит следующим образом:

    x = tf.transpose(x, [1, 0])
    x = tf.reshape(x, [-1, num_features])

    hidden = tf.nn.relu(tf.matmul(x, self.h_W) + self.h_biases)
    hidden = tf.split(hidden, self.time_step)

    lstm_layers = [tf.contrib.rnn.BasicLSTMCell(self.hidden_units, forget_bias=1.0) for _ in range(2)]

    lstm_layers = tf.contrib.rnn.MultiRNNCell(lstm_layers)
    outputs, _ = tf.contrib.rnn.static_rnn(lstm_layers, hidden, dtype = tf.float32)

    lstm_output = outputs[-1]

и, наконец, я определяю функцию потерь и оптимизатор

loss = tf.reduce_mean(tf.square(y - y_pred))
opt = tf.train.AdamOptimizer(learning_rate = LEARNING_RATE).minimize(loss)

, а сейчас я хочу взять предыдущие 10 значений, чтобы предсказать 11-е.поэтому я запускаю сессию как

for time in range(0, len(X)):
        sess.run(opt, feed_dict = {x : X[time: time + TIME_STEP ],
                                   y : Y[time + TIME_STEP + 1]})

, но когда я проверяю потери для этой функции, она имеет огромное значение, например 99400290.0, и она увеличивается время от времени.Это мой первый опыт предсказания последовательностей, поэтому я думаю, что мне не хватает чего-то огромного

1 Ответ

0 голосов
/ 05 декабря 2018

Да, вам следует нормализовать входные данные реального мира, и в нем должно использоваться то же масштабирование (те же параметры), что и в вашем тренировочном наборе.

Причина в том, что теперь ваша модель обучена принимать входные данныеопределенной формы и масштаба и для того, чтобы он функционировал как задумано, вам нужно будет масштабировать ваши тестовые входы в него.

(извините за публикацию этого в качестве ответа, недостаточно повторений для комментариев)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...