Я хочу спрогнозировать набор из 6 временных рядов, используя RNN в тензорном потоке. Я хочу, чтобы входная длина составляла 12 наблюдений (для каждого временного ряда), а выходная длина была 18 (для каждого временного ряда). Я не могу заставить его работать. Код ниже работает, если горизонт прогноза установлен равным длине ввода.
Спасибо!
f_horizon = 18 # Forecast horizon
num_periods = 12 # Input length
X = tf.placeholder(tf.float32, [None, num_periods, 6])
Y = tf.placeholder(tf.float32, [None, f_horizon, 6])
layers = [tf.nn.rnn_cell.LSTMCell(num_units=hi, activation=tf.nn.relu) for hi in hidden]
drops = [tf.contrib.rnn.DropoutWrapper(layer, output_keep_prob=dropout_prop) for layer in layers]
drops.append(tf.nn.rnn_cell.LSTMCell(num_units=f_horizon, activation=tf.nn.relu))
multi_layer_cell = tf.contrib.rnn.MultiRNNCell(drops)
rnn_output, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)
stacked_rnn_output = tf.reshape(rnn_output, [-1, f_horizon])
stacked_outputs = tf.layers.dense(stacked_rnn_output, 6)
outputs = tf.reshape(stacked_outputs, [-1, f_horizon, 6])
loss = tf.reduce_mean(tf.square(outputs - Y))