我正在使用预训练的 VGG-16 网络将图像转换为特征。我可以按顺序做到这一点。但是,我想并行执行此操作,但我不确定如何正确构建批处理。
具体来说,假设我加载了 16 个保存在 numpy 数组(即 16x224x224x3)中的图像。我想并行转换这些。这是我到目前为止所拥有的:
checkpoint_file = './vgg_16.ckpt'
input_tensor = tf.placeholder(tf.float32, shape=(None,224,224,3), name='input_image')
scaled_input_tensor = tf.scalar_mul((1.0/255), input_tensor)
scaled_input_tensor = tf.subtract(scaled_input_tensor, 0.5)
scaled_input_tensor = tf.multiply(scaled_input_tensor, 2.0)
arg_scope = vgg_arg_scope()
with slim.arg_scope(arg_scope):
_, end_points = vgg_16(scaled_input_tensor, is_training=False)
sess = tf.Session()
saver = tf.train.Saver()
saver.restore(sess, checkpoint_file)
images = get_16_images() #arbitrary function, images is 16x224x224x3
images = tf.convert_to_tensor(images)
batch = tf.train.batch(im, 2, num_threads=6, enqueue_many=True, allow_smaller_final_batch=True)
sess.run(end_points['vgg_16/fc7'], feed_dict={input_tensor: batch}) #Error
我最终得到一个错误:
*** ValueError:使用序列设置数组元素。
有人能帮我一下吗?批处理教程似乎专注于在读取数据时创建批处理,但我已经读取了数据并且只是想创建一个批处理来并行化网络对不同图像的计算。