首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过TensorFlow-Slim VGG预先训练好的网络批量传递图片?

如何通过TensorFlow-Slim VGG预先训练好的网络批量传递图片?
EN

Stack Overflow用户
提问于 2017-07-03 04:33:36
回答 1查看 1.4K关注 0票数 1

我想通过网络传递图像以完成迁移学习任务。在下面的代码中,我将构建图形,然后获取完全连接层的输出。我想成批获得输出,因为我有一个包含超过20k图像的数组。

vgg.vgg_16(images)要求images是一个图像数组。我尝试输入占位符(在查看docs之后),但是在加载检查点时,我得到了一个错误的There are no variables to save

我可以一次给vgg.vgg_16(images)提供几张图片,但我需要为每一批加载检查点。我很确定有更好的方法可以做到这一点。有没有我可以参考的例子或参考资料?

代码语言:javascript
复制
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)

我还尝试了thisthis参考资料,但我没有找到答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-03 06:37:27

您可以创建一个可以传递给vgg网络的placeholder。将您的代码更改为:

代码语言:javascript
复制
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)

在训练期间,将输入传递给网络:

代码语言:javascript
复制
fc6_output = sess.run(fc6, feed_dict={images:batch_images})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44874973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档