Я использую tf.train.shuffle_batch() для создания партий входных изображений. Он включает параметр min_after_dequeue, который гарантирует, что во внутренней очереди указано определенное количество элементов, и блокирует все остальное, если этого не происходит.Tensor Flow shuffle_batch() блокирует в конце эпохи
images, label_batch = tf.train.shuffle_batch(
[image, label],
batch_size=FLAGS.batch_size,
num_threads=num_preprocess_threads,
capacity=FLAGS.min_queue_size + 3 * FLAGS.batch_size,
min_after_dequeue=FLAGS.min_queue_size)
В конце эпохи, когда я делаю оценки (я уверен, что это верно и в обучении, но я не проверял), все блоки. Я понял, что в тот же момент внутренняя очередь партии в случайном порядке будет оставлена с минимальными элементами min_after_dequeue. В это время в программе я бы идеально хотел просто удалить оставшиеся элементы, но я не уверен, как это сделать.
Очевидно, что этот тип блокировки внутри очередей TF может быть отключен, когда вы знаете, что больше нет элементов, связанных с методом .close(). Однако, поскольку основная очередь скрыта внутри функции, как я могу вызвать этот метод?
Не могли бы вы переместить код, который работал в ответ, и принять его так, чтобы другим было легче видеть, что у вашего вопроса есть ответ, не прочитав весь ваш вопрос. Благодарю. –