Нерегулярное поведение в TensorFlow с Anaconda

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

Программа работала изначально, и она показывала изображение. После того, как я перевел компьютер в режим сна и возобновил работу, он перестал работать. На следующее утро такое же поведение продолжалось. Я перезапустил ядро ​​в Spyder напрасно. Однако, как только я перезапустил приложение, все начало работать нормально. В другом случае программа работала правильно с первого раза. Повторное нажатие на кнопку запуска привело к ошибке. Точная ошибка FIFOQueue '_1_processed_queue' is closed and has insufficient elements (requested 50, current size 0)

Код прилагается здесь. Целью кода является создание мини-пакета размером 50 и отобразить первое изображение после изменения размера.

import tensorflow as tf
from PIL import Image

# BasePath Name
number_of_images = 1000
basepath = '../../Datasets/sample_train1/png'
filenames = [basepath+'/'+str(i)+'.png' for i in range(number_of_images)]
filename_queue = tf.train.string_input_producer(filenames)

# Create a reader for reading the images
image_reader = tf.WholeFileReader()

# Read the files as (key, value) pairs
key , image_file = image_reader.read(filename_queue)

# Decode the image as a png
image_orig = tf.image.decode_png(image_file)

# Resize images to the right size
image = tf.image.resize_images(image_orig, [256, 256])
image.set_shape((256, 256, 4))

# Define arguments for shuffle_batch
batch_size, num_preprocess_threads, min_queue_examples = 50, 1, 256

# shuffle_batch function returns a list of lists. So use tf.convert_to_tensor function to change it Shape = (batch_size, h, w, 4) - RGBA
# Till now we have been using single image, but the following call allows to work with 'batch_size' of images
images = tf.train.shuffle_batch([image], batch_size=batch_size, num_threads=num_preprocess_threads,capacity=min_queue_examples + 3 * batch_size,min_after_dequeue=min_queue_examples)

# Make the RGBA images RGB images
images = tf.slice(images, begin=[0,0,0,0], size=[50, 256, 256, 3])

# Start a new session to show example output.
with tf.Session() as sess:
    # Required to get the filename matching to run.
    tf.global_variables_initializer().run()

    # Coordinate the loading of image files.
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(coord=coord)

    # Get an image tensor and print its value.
    image_tensor = sess.run(images)

    # Display the first image
    Image.fromarray(image_tensor[0].astype('uint8')).show()

    # Finish off the filename queue coordinator.
    coord.request_stop()
    coord.join(threads)

Спецификация:

  • IDE: Spyder (3.1.4)
  • Framework: TensorFlow (1.3.0)
  • Операционная система: Windows 10

0 ответов

Другие вопросы по тегам