Как передавать изображения через предварительно обученную сеть TensorFlow-Slim VGG в пакетном режиме?
Я хочу передать изображения по сети для задачи обучения переносу. В следующем коде я строю график, а затем получаю выходные данные полностью связанного слоя. Я хотел получить выходные данные партиями, потому что у меня есть массив с более чем 20k изображений.
vgg.vgg_16(images)
требуется images
быть массивом изображений. Я пытался подать заполнитель ввода (после просмотра документов), но при загрузке контрольной точки я получил ошибку There are no variables to save
,
Я могу кормить vgg.vgg_16(images)
несколько изображений одновременно, но мне нужно будет загрузить контрольную точку для каждой партии. Я уверен, что есть лучший способ сделать это. Есть ли примеры или ссылки, на которые я могу посмотреть?
from tensorflow.contrib import slim
from tensorflow.contrib.slim.nets import vgg
images = np.array(read_images(val_filenames[:4], 224, 224), dtype=np.float32) # load images and resize to 224 x 224
vgg_graph = tf.Graph()
with vgg_graph.as_default():
with slim.arg_scope(vgg.vgg_arg_scope()):
outputs, end_points = vgg.vgg_16(images, is_training=False)
fc6 = end_points['vgg_16/fc6']
with tf.Session(graph=vgg_graph) as sess:
saver = tf.train.Saver()
saver.restore(sess, 'checkpoints/vgg_16.ckpt')
# pass images through the network
fc6_output = sess.run(fc6)
1 ответ
Вы можете создать placeholder
что вы можете передать его vgg
сеть. Измените свой код на:
images = tf.placeholder(tf.float32, shape=[batch_size, height, width, channels])
with slim.arg_scope(vgg.vgg_arg_scope()):
outputs, end_points = vgg.vgg_16(images, is_training=False)
и во время обучения передайте вход в сеть:
fc6_output = sess.run(fc6, feed_dict={images:batch_images})