我使用以下原型文字:
layer {
name: "pool2"
type: "Pooling"
bottom: "conv5"
top: "pool2"
pooling_param {
pool: MAX
kernel_w: 2
kernel_h: 1
stride_w: 2
stride_h: 1
pad_h: 0
pad_w: 0
}
}
前面的blob形状是1x64x1x30,之后是1x64x1x15。不应该是1x64x1x14吗?
来自caffe doc:
w_o = (w_i + 2*pad_w - kernel_w)/stride_w = (30 - 2)/2 = 14.
这是有道理的,因为池将是:[0,1] [2,3] [4,5] ...... [28,29]这是14个元素。
答案 0 :(得分:0)
通常,最大池层接受大小为W1 x H1 x D1的输入卷,并且需要两个超参数 - 步幅(S)和内核大小(K)。它产生大小为W2×H2×D2的输出体积,其中我们有W2 =(W1-K)/ S + 1,H2 =(H1-K)/ S + 1,D2 = D1。简单计算得出内核大小为2且步幅为2的输入减半,验证了caffe的网络输出形状。