Tensorflow中使用Inception-v2的预期特征向量大小

Tensorflow中使用Inception-v2的预期特征向量大小,tensorflow,machine-learning,deep-learning,conv-neural-network,Tensorflow,Machine Learning,Deep Learning,Conv Neural Network,我希望为目标检测中感兴趣的区域提取特征向量。我使用的是更快的RCNN和Inception-v2,基本上遵循了这一点,但我添加了检测功能作为关键 我的印象是特征向量是CNN在分类之前的输出。从中的表1可以看出,我预计它的尺寸为1x1x1000。然而,在我的代码中,输出[u dict['detection\u features'][0]的大小是4x4x1024,这让我感到困惑,因为这似乎不是在Inception-v2的任何步骤中出现的向量大小 任何关于尺寸不匹配原因的提示都将不胜感激,我担心我可能误

我希望为目标检测中感兴趣的区域提取特征向量。我使用的是更快的RCNN和Inception-v2,基本上遵循了这一点,但我添加了检测功能作为关键

我的印象是特征向量是CNN在分类之前的输出。从中的表1可以看出,我预计它的尺寸为1x1x1000。然而,在我的代码中,输出[u dict['detection\u features'][0]的大小是4x4x1024,这让我感到困惑,因为这似乎不是在Inception-v2的任何步骤中出现的向量大小

任何关于尺寸不匹配原因的提示都将不胜感激,我担心我可能误解了一些东西,但我在Tensorflow的目标检测中找不到太多关于特征向量的文档


非常感谢

每层的具体单元数不是建筑法;遵循Inception V2体系结构的网络首先是一个信息流问题。你的情况看起来不错。Keras的创造者曾经写道,使用8的倍数单位可能会带来轻微的计算优势,因此最后一层单位可能比纸张的单位稍好。对于4,4位,这可能是输入尺寸的结果。这就是为什么有一个最小可能的输入大小,否则一些操作将没有任何像素可处理。按照相同的Inception V2程序,较大的输入图像将导致较大的输出尺寸。这很好,它只是意味着cnn和分类器之间的直接扁平化会产生更多的单位,或者,全局池丢弃更多的信息

总之:你所做的一切都很好。体系结构是图形操作的问题,而网络中的特定实现维度是应用程序的问题

编辑:更透彻的解释
卷积层由它们的核形状和单元数以及核数定义。如果一个体系结构使用一个卷积层和一个3,3矩阵内核,那么不管提供给它的内容大小如何,它都会应用这个层,至少与内核一样大。因此,如果像VGG这样的网络体系结构需要一定数量的卷积层,其中包含3,3个内核,后跟2,2个池层,那么将网络输入形状设置为299299,3或32,32,32并不重要。同样的操作将在输入上执行,只是在轴上执行不同的次数,当然包括最后一个轴,即单元数,即唯一内核数,从而产生不同的输出形状。

Ahhh,谢谢,我想我理解了。我一直认为NNs需要一个固定的输入大小,但这只适用于完全连接的层,而在线性层之前的Inception只使用卷积和池,这与大小无关。因此,因为我的输入大约是“标准”实现的4倍大和宽,所以它没有减少到1x1?1,1处的向量表示图像的左上角,4,4处的向量表示图像的右下角吗?我不想让你感到困惑;您最初的理解是正确的:NNs需要固定的输入大小。然而,你可以随心所欲。因此,较大的输入意味着较大的输出,尽管4,4单位而不是1,1单位并不意味着输入是4倍大;这取决于网络中的操作。这里,我为你做了这个:。主要的一点是,网络架构是过程;维度取决于您和您的应用程序的需要。关于您关于输出代表什么的问题。。。很多人认为它是这样工作的;它经常被称为特征图,但请自己看看一些输出:很少有任何关于它的制图。事实上,它是一种信息密集的编码,人类几乎无法理解。但是没关系!仅仅因为它在技术上看起来不像特征图并不意味着你不能像特征图一样对待它,如果你的目标有空间依赖性——丰富的编码信息也可以携带这些信息。好吧,这很有意义,非常感谢你的kaggle,这非常有用,而且非常清晰。我仍然情不自禁地感觉到,对于特征图来说,会有一些轻微的趋势,以更好地表示其位置周围的区域,尤其是对于较大的输入。但是,正如你所建议的,我将自己尝试一下,并期望找到你所说的,地图是如此抽象,位置不再有太大的相关性。非常感谢您花时间回答,它非常有帮助:当然,很高兴它有意义:您的直觉肯定是正确的,输出像素与输入像素在空间上是相关的,基于conv/pooling过程。只是当它达到输出时,已经执行了很多操作,除非通过培训授权,否则输出是无效的 更多的信息。我目前正在进行一个大型的可视化项目,这将使这个项目具有探索性。