繁体   English   中英

当用作预训练特征提取器时,VGG16应该提取多少个特征?

[英]How many features is VGG16 supposed to extract when used as a pre-trained feature extractor?

我将Keras与TensorFlow后端配合使用,以使用经过预先训练的模型(ImageNet上的VGG16)从图像中提取特征。 从我可以在线阅读的内容中,我应该为每个图像获得具有4096个特征的向量。

我正在使用这条线来导入没有最后一个完全连接的层的模型(正如我认为的那样):

applications.vgg16.VGG16(weights='imagenet', include_top=False, pooling='avg'

但是,我最终得到的向量只有512个特征。 考虑到VGG16的体系结构:

VGG16的架构

看来我实际上是从最后一个最大池化层获取结果(这与Keras文档一致)。

那我应该获得512或4096个功能吗?

根据Keras文档,当您设置include_top = False它会忽略最后3个完全连接(FC)层,因此从直观上来说,您应该获得正确的512个特征向量。 如果要考虑最后3个FC层,请设置include_top = True 然后,您将获得1000个特征预测(在最后考虑softmax层)。

尝试执行:

vggmodel = keras.applications.vgg16.VGG16(weights='imagenet', include_top=False, pooling='avg')
vggmodel.summary()

vggmodel = keras.applications.vgg16.VGG16(weights='imagenet', include_top=True, pooling='avg') 
vggmodel.summary()

以获得更全面的了解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM