今天尝试着想实现了多尺度,终于发现了pytorch的好处。
一开始还吐槽为什么pytorch没有像tensorflow一样提供GAP和GMP这种最基本的层,才发现有AdaptiveAvgPool2d和AdaptiveMaxPool2d这种功能更加强大的层。
首先,用如下方式可以实现GAP或GMP

其次,SPP也可以用类似的方式实现,如下代码相当于spp的[2,3,4]

以后,拼接下隐层特征就行

代码有点丑,太长了,不知道是不是写的不正规,flatten层前写了一堆代码。GSM是N年前费好大劲想出的创新点,没想到pytorch实现起来如此简单。

改造完毕后,发现有点用,比flatten得到的结果好,原生LeNet 的结果96.xx%,有一点提升。GMS层=传递特征+显著特征+细节特征的拼接。其他经典神经网络就不一一对比了。