很多写这个的。大部分没看懂。自己总结一下不知道对不对。
1.起因:好多网络,需要输入的数据是固定大小的,为啥呢,因为全连接层是确定大小的,反推回来,如果输入数据不按套路来,到全连接层矩阵维度对不上了。固定大小的缺点那肯定是图像需要做变换啊,结果图像变形了,识别能好得了吗。大神就研究了,能不能有个输入可变大小,输出固定大小的层来解决这个事呢,这样,就不用折腾输入图像了,输出还固定照顾了全连接层。
2.做法:在卷积之后,全连接之前加个处理吧。怎么处理的呢,简单粗暴: 全连层接需要多少维度的数据,就用卷积特征图做出来,下面这个图的做法就是用池化方法来做。
全连接层(fully-connected):sppnet老弟(中间黑色矩形内的各种处理),我要固定维度是21的,大神说好的,看我加工特征图(黑不溜秋的input image图)。
a.先把特征图做一次池化得到一个1*256的特征(最右侧灰色)。
b.再把特征图切分4块,做出4个1*256的特征(中间绿色)。
c.还差16个, 那就把特征图砍成16块然后池化,那就做出来16个1*256的特征(最左侧蓝色)。
d.把特征划拉划拉放到一起(a,b,c拼接),就出全连接层想要的21维(fixed-length representation)了啊 1 + 4 + 16. 可见这个特征可以随意做,就看效果好不好了。然后扔给全连接层。老哥接着~~~~。
全连接层:收到,非常完美!!!!!!!!
不知道说的对不对欢迎大神拍砖,指正