我正在使用slim库来训练我自己的resnet_v2_152和
构建我自己的图像numpy数组数据,堆叠有20个图像。
这意味着我的numpy数组大小将是
[224, 224, 20]
通过使用字节转换将数据转换为tfrecords并在预处理后获取图像数组数据时我没有问题,但它总是显示错误
INFO:tensorflow:Error reported to Coordinator:
<class 'tensorflow.python.framework.errors_impl.InvalidArgumentError'>,
Shape mismatch in tuple component 0. Expected [224,224,3], got [224,224,20]
和
OutOfRangeError (see above for traceback): FIFOQueue '_5_batch/fifo_queue'
is closed and has insufficient elements (requested 1, current size 0)
当我申请tf.train.batch
时以下是我的代码部分
dataset = dataset_factory.get_dataset(
FLAGS.datasetname, FLAGS.dataset, FLAGS.dataset_dir)
network_fn = nets_factory.get_network_fn(
FLAGS.model_name,
num_classes=101,
is_training=True)
provider = slim.dataset_data_provider.DatasetDataProvider(
dataset,
num_readers=4,
common_queue_capacity=20 * FLAGS.batch_size,
common_queue_min=10 * FLAGS.batch_size)
[image, label] = provider.get(['image', 'label'])
label -= 0
preprocessing_name = FLAGS.preprocessing_name or FLAGS.model_name
image_preprocessing_fn = preprocessing_factory.get_preprocessing(preprocessing_name, is_training=True)
eval_image_size = FLAGS.eval_image_size or network_fn.default_image_size
image = image_preprocessing_fn(image, eval_image_size, eval_image_size)
#Batch size is 1
images, labels = tf.train.batch(
[image, label],
batch_size=FLAGS.batch_size,
num_threads=4,
capacity=5 * FLAGS.batch_size)
init_op = tf.group(tf.global_variables_initializer(),
tf.local_variables_initializer())
#This part to see the fetched results
with tf.Session() as sess:
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
sess.run(init_op)
im = sess.run(images)
l = sess.run(label)
coord.request_stop()
coord.join(threads)
我坚持要遵循train_image_classifier.py中的风格,因为我想使用超薄库提供的默认训练模式。
我将非常感谢您的帮助和解答。感谢
答案 0 :(得分:0)
我刚刚经历过自己的经历,并发现错误是由于尺寸预处理图像尺寸
通过更改
中的代码vgg_preprocessing.py
image.set_shape([output_height, output_width, 3])
到
image.set_shape([output_height, output_width, channels])
然而,我想知道改变这个有什么影响,如果有人能回答我,那么我真的很感激。感谢