gpt4 book ai didi

python - 在 tensorflow 中对图像并行运行预训练的 VGG-16

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:07 24 4
gpt4 key购买 nike

我正在使用预先训练的 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: setting an array element with a sequence.

有人可以帮我吗?批处理教程似乎专注于在读取数据时创建批处理,但我已经读取了数据,只是想创建一个批处理来并行化网络对不同图像的计算。

最佳答案

好吧,这是一个愚蠢的问题,但我认为其他 tensorflow 新手可能会遇到同样的问题。

如果不清楚,feed_dict 接受numpy 数组。所以你不需要构造一个显式的批量张量。只需传入多个 numpy 数组,tensorflow 就会处理它。请注意我定义输入张量的位置:

input_tensor = tf.placeholder(tf.float32, shape=(None,224,224,3), name='input_image')

所以 tensorflow 已经知道输入将是一个“批处理”。变量images(来自get_16_images())已经正是我所需要的。

您可以通过检查 CPU 分配来确认这是并行的。该批处理的 Python CPU 分配飙升至 650%。

关于python - 在 tensorflow 中对图像并行运行预训练的 VGG-16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45931866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com