我试图了解 Darknet 的工作原理,我正在查看 yolov3-tiny 配置文件,特别是第 13 层(第 107 行)。
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
内核的大小为1x1,步长为1,填充也为1。 当我使用darknet加载网络时,它表明输出宽度和高度与输入相同:
13 conv 256 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 256
但是,既然内核是1x1并且有padding,宽度和高度不应该增加2吗?如果我理解正确的话,内核将遍历输入的所有“像素”加上填充,因此宽度和高度应该增加 2*填充对我来说是有意义的。
我用了公式
output_size = ((input_size – kernel_size + 2*padding) / stride) + 1
它检查出来了。 (13 - 1 + 2 * 1) / 1 + 1 = 15
有人知道我错过了什么吗?
提前谢谢您。
我明白了。
我误解了图层中的pad参数。如果你想让padding为1,你应该这样写:
padding=1
pad实际上是一个布尔值。当设置为 1 时,图层的填充将等于 size / 2。
在本例中,内核的大小为 1,因此填充最终为 1/2 = 0(整数运算)。由于没有填充,输出的宽度和高度与输入中的相同。
我应该有RTFM。
哪里可以找到说明书????