画像を機能に変換するために、事前トレーニング済みの VGG-16 ネットを使用しています。私はこれを順番にうまく行うことができます。ただし、これを並行して行いたいのですが、バッチを適切に構築する方法がわかりません。
具体的には、numpy 配列 (つまり、16x224x224x3) に保持されている 16 個の画像をロードするとします。これらを並行して変換したい。これが私がこれまでに持っているものです:
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: シーケンスで配列要素を設定しています。
誰でもここで私を助けることができますか? バッチ チュートリアルは、データの読み込み中にバッチを作成することに重点を置いているようですが、既にデータを読み込んでおり、ネットワークによるさまざまな画像の計算を並列化するためのバッチを作成したいだけです。