max论坛网站源码分享(d-max论坛)

大家好,今天来为大家分享max论坛网站源码分享的一些知识点,和d-max论坛的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

我们知道Pooling操作会使得featuremap的尺寸发生变化,假如做2×22×2的池化,假设l+1l+1层的featuremap有16个梯度,那么第ll层应该需要64个梯度,做法很简单,只需要把1个像素的梯度反向传给4个像素即可,但是要保证传递的梯度总和不变。由于有这条原则,因此avgpooling和maxpooling的反向传播并不相同

1.avgpooling

avgpooling的前向传播就是把一个patch(窗口)内的值求和取平均。那么反向传播的过程就是把某个元素的梯度等分成n份,分配给前一层,这样就保证了池化前后的梯度之和保持不变,还是比较好理解的,图示如下

avgpooling比较容易让人理解错的地方就是以为梯度直接复制N遍,但是这样会造成loss之和变为原来的N倍,网络会发生梯度爆炸

maxpooling

maxpooling也要满足梯度之和不变的原则,maxpooling的前向传播是把patch中最大的值传给后一层,而其他像素的值直接被舍弃掉。那么反向传播也就是把这个梯度直接传给前一层某一像素,儿其它像素不接受梯度,也就是0。maxpooling和avgpooling操作的不同点在于需要记录池化时,到底哪个像素的值是最大的,也就是max_id,这个可以看caffe的源码的pooling_layer.cpp,下面是caffe框架maxpooling部分的源码

关于max论坛网站源码分享的内容到此结束,希望对大家有所帮助。

站内搜索