Итератор TensorFlow LSTM для тестовой очереди увеличивается во время обучения

#python #tensorflow #queue #lstm #recurrent-neural-network

#python #tensorflow #очередь #lstm #рекуррентная нейронная сеть

Вопрос:

У меня есть LSTM в Tensorflow, который использует очередь для различения обучающих и тестовых данных.

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

 # Queue for Trainingdata
iter_train = tf.data.Dataset.range(epochNum_train).repeat().make_one_shot_iterator().get_next()

input_train_queue = input_train[:, iter_train * num_steps : (iter_train   1) * num_steps, :]
input_train_queue.set_shape([batch_size, num_steps, input_size])

output_train_queue = output_train[:, iter_train * num_steps: (iter_train   1) * num_steps, :]
output_train_queue.set_shape([batch_size, num_steps, input_size])

# Queue for Testdata
iter_test = tf.data.Dataset.range(epochNum_test).repeat().make_one_shot_iterator().get_next()

input_test_queue = input_test[:, iter_test * num_steps : (iter_test   1) * num_steps, :]
input_test_queue.set_shape([batch_size, num_steps, input_size])

output_test_queue = output_test[:, iter_test * num_steps: (iter_test   1) * num_steps, :]
output_test_queue.set_shape([batch_size, num_steps, input_size])   

# tf.cond for the selection of data
rnn_outputs, _ = tf.nn.dynamic_rnn(cell, tf.cond(useTestData, lambda: input_test_queue, lambda: input_train_queue),
                                      dtype=tf.float32, initial_state=init_state)
error = tf.reduce_mean(tf.squared_difference(rnn_outputs, tf.cond(useTestData, lambda: output_test_queue, lambda: output_train_queue)))
train_fn = tf.train.AdamOptimizer(learning_rate=0.01).minimize(error)
  

Моя проблема в том, что iter_test также увеличивается, когда обучающие данные передаются в LSTM:

 t1 = sess.run(iter_test) # t1 has the value 0 
sess.run(train_fn, {useTestData: False})
t2 = sess.run(iter_test) # t2 has the value 2 
t3 = sess.run(iter_test) # t3 has the value 3 
  

Почему iter_test увеличивается во время обучения? И есть ли решение проблемы, чтобы оно iter_test не менялось во время обучения?