我有一个Caffe CNN模型,我正在尝试使用importCaffeNetwork
命令将其导入MATLAB,该命令将prototxt和caffemodel文件作为输入参数。
但是,我收到此错误:
The pooling layer 'pool1' is not compatible with MATLAB. Caffe computes the output size as [16 16 32] but MATLAB computes it as [15 15 32]
似乎误差与MATLAB和CAFFE中汇集层的输出大小计算的差异有关,前者使用ceil
而后者使用floor
函数。
它是问题的真正根源吗?我该怎么做才能解决这个问题?
这是因为在caffe中,卷积层和池化层的输出大小计算略有不同。假设输入dim是h
,填充是p
,内核大小是k
,stride是s
,对于卷积层,输出大小是floor((h+2*p-k)/s)+1
,但是对于合并层,输出大小是ceil((h+2*p-k)/s)+1
。
因此即使参数和输入大小相同,输出大小也是不同的。
调整填充和步幅等参数以及内核大小以确保输出相同。