根据原纸,YOLO网络层的输入大小为448x448x3,在应用滤波器(7x7x64-s-2)后,如我所设想的,输出形状为221x221x192。一些资料来源断言输出形状是224x224x192,但是如果我们不使用内核(2x2x64-s-2),怎么可能呢?
我想用keras来实现它。但是我的代码不允许获得它给出的下一个层的正确大小(无,221,221,64)
model = Sequential()
# The 1st layer
model.add(Conv2D(filters=64, kernel_size=7,
strides=2, input_shape=(448,448,3)))
model.add(LeakyReLU(alpha=0.1))发布于 2018-11-13 14:22:52
通常,当我们使用CNN时,我们使用填充卷积,这样,激活映射具有与输入相同的大小。
看这个视频,了解填充是如何工作的:吴教授关于填充的课程 (您需要一个帐户来观看完整的视频)
在Keras中,Conv2D层有一个名为“填充”的参数,这里有一个指向文档的链接:Keras的卷积层文档
请注意,因为他们说,当使用与1不同的步长时,将填充设置为“相同”(这里是您的情况)可能会不一致,这取决于您使用的后端。我让你试着看看第二层是否有正确的形状。
这样,您的conv层输出应该与本文中的224x224相同(在maxpool层之后为112x112 )。
注意:小心你的过滤器号码。您将过滤器的数目设置为64,但在本文中,过滤器的数目是192 (我猜是64*3,因为有3个通道?)
https://datascience.stackexchange.com/questions/41162
复制相似问题