我看过this博客文章介绍了如何使用Google的图像分类模型Inception V3本地化图像中的对象。
“我们可以将8x8x2048表示解释为特征网格, 将图像分解为8水平和8垂直网格 平方“。
任何人都可以解释如何在python中访问8x8x2048的Inception层吗?然后使用1x1卷积将这些向量中的每一个映射到类标签?
谢谢!
答案 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>]