tensorflow string_input_producer 给出空队列
tensorflow string_input_producer gives empty queue
我正在尝试根据文件名列表在 tensorflow 中创建一个队列。列表已生成,但字符串输入生成器似乎返回了一个空队列。代码不起作用可能还有其他原因。下面是代码:
sess = tf.InteractiveSession()
def read_my_file_format(filename_queue):
reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)
images = tf.image.decode_jpeg(value, channels=3)
return images, key
def input_pipeline(filenames, batch_size, num_epochs, labels):
filename_queue = tf.train.string_input_producer(filenames, num_epochs=num_epochs, shuffle=False)
image, key = read_my_file_format(filename_queue)
return image, key
sess.run(tf.global_variables_initializer())
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess = sess, coord = coord, start=True)
input_pipeline(trainnames, batch_size, None, labels)
coord.request_stop()
coord.join(threads)
如果您能提供错误消息,将会有所帮助。
同时,对您的代码做几点说明:
- 方法
input_pipeline
定义了与您的队列关联的 TensorFlow 运算符并将它们添加到图表中,因此如果您希望队列成为图表的一部分,您应该在调用 sess.run(tf.global_variables_initializer())
之前调用它,并且如果您希望协调器启动您的队列,请在调用 start_queue_runners
之前。
- 您还没有要求 TensorFlow 实际上 运行 您的
image, key
运算符。
这是我要尝试的代码:
sess = tf.InteractiveSession()
def read_my_file_format(filename_queue):
reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)
images = tf.image.decode_jpeg(value, channels=3)
return images, key
def input_pipeline(filenames, batch_size, num_epochs, labels):
filename_queue = tf.train.string_input_producer(filenames, num_epochs=num_epochs, shuffle=False)
image, key = read_my_file_format(filename_queue)
return image, key
# Let us define the queue operators and add them to the default graph.
image, key = input_pipeline(trainnames, batch_size, None, labels)
sess.run(tf.global_variables_initializer())
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess = sess, coord = coord, start=True)
# Let's run the image, key tensors.
sess.run([image, key])
coord.request_stop()
coord.join(threads)
我正在尝试根据文件名列表在 tensorflow 中创建一个队列。列表已生成,但字符串输入生成器似乎返回了一个空队列。代码不起作用可能还有其他原因。下面是代码:
sess = tf.InteractiveSession()
def read_my_file_format(filename_queue):
reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)
images = tf.image.decode_jpeg(value, channels=3)
return images, key
def input_pipeline(filenames, batch_size, num_epochs, labels):
filename_queue = tf.train.string_input_producer(filenames, num_epochs=num_epochs, shuffle=False)
image, key = read_my_file_format(filename_queue)
return image, key
sess.run(tf.global_variables_initializer())
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess = sess, coord = coord, start=True)
input_pipeline(trainnames, batch_size, None, labels)
coord.request_stop()
coord.join(threads)
如果您能提供错误消息,将会有所帮助。
同时,对您的代码做几点说明:
- 方法
input_pipeline
定义了与您的队列关联的 TensorFlow 运算符并将它们添加到图表中,因此如果您希望队列成为图表的一部分,您应该在调用sess.run(tf.global_variables_initializer())
之前调用它,并且如果您希望协调器启动您的队列,请在调用start_queue_runners
之前。 - 您还没有要求 TensorFlow 实际上 运行 您的
image, key
运算符。
这是我要尝试的代码:
sess = tf.InteractiveSession()
def read_my_file_format(filename_queue):
reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)
images = tf.image.decode_jpeg(value, channels=3)
return images, key
def input_pipeline(filenames, batch_size, num_epochs, labels):
filename_queue = tf.train.string_input_producer(filenames, num_epochs=num_epochs, shuffle=False)
image, key = read_my_file_format(filename_queue)
return image, key
# Let us define the queue operators and add them to the default graph.
image, key = input_pipeline(trainnames, batch_size, None, labels)
sess.run(tf.global_variables_initializer())
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess = sess, coord = coord, start=True)
# Let's run the image, key tensors.
sess.run([image, key])
coord.request_stop()
coord.join(threads)