使用初始V3

时间:2016-11-16 13:17:27

标签: python machine-learning neural-network tensorflow deep-learning

我看过this博客文章介绍了如何使用Google的图像分类模型Inception V3本地化图像中的对象。

  

“我们可以将8x8x2048表示解释为特征网格,   将图像分解为8水平和8垂直网格   平方“。

任何人都可以解释如何在python中访问8x8x2048的Inception层吗?然后使用1x1卷积将这些向量中的每一个映射到类标签?

谢谢!

2 个答案:

答案 0 :(得分:5)

inception model in tensorflow's repo调用inception.slim.inception_v3函数,您需要修改网络here,为1x1卷积添加一层。

变化非常小,您可以按照构建其他图层的方式进行。简单来说,该层就像:

net = ops.conv2d(net, 2048, [1, 1])

答案 1 :(得分:0)

我发现你可以获得8x8x2048

    with tf.Session(config=config) as sess:
        tensor = sess.graph.get_tensor_by_name('mixed_10/join:0')
        for image_to_test in os.listdir(directory):
            image = os.path.join(directory, image_to_test)
            with tf.gfile.FastGFile(image, 'rb') as f:
                image_data = f.read()
                decoded={'DecodeJpeg/contents:0': image_data}
                predictions = sess.run(tensor, decoded)

预测现在有8x8x2048

然而,我还没有想出如何从" 2048"值

我正在尝试

import tensorflow.contrib.slim as slim

predictions = sess.run(tensor, decoded)
ppp= slim.conv2d(predictions,2048,[1,1])
x=tf.unstack(ppp)

但是这会给出一个张量

Tensor(" Conv / Relu:0",shape =(1,8,8,2048),dtype = float32,device = / device:CPU:0)

[< tf.Tensor' unstack:0' shape =(8,8,2048)dtype = float32>]