卷积

整理一下, 关于卷积层梯度反向传递的过程.

参考
参考

注: (s ot=1)的部分是自己推得, 可能是错的(自己想了很久, 感觉错的机会不大).

符号

在这里插入图片描述

输入: (x in mathbb{R}^{N imes C imes H imes W});
权重: (w in mathbb{R}^{F imes C imes HH imes WW});
biases: (b);
输出:(y in mathbb{R}^{N imes F imes H' imes W'})

[H' = 1+ (H+2 p-HH)/s \ W' = 1+ (W+2p-WW)/s, ]

其中(p)表示补零(pad), (s)表示滑动距离(stride).

[y=x*w, ]

其中(*)表示卷积.

2-D, s=1

不考虑(C), 可以将补零后的视作(x).

在这里插入图片描述

(mathrm{d}b)

在这里插入图片描述

(mathrm{d}w)

[mathrm{d}w=x*mathrm{d}y ]

在这里插入图片描述

(mathrm{d}x)

[mathrm{d}x=mathrm{d}hat{y} * w^r. ]

在这里插入图片描述

(mathrm{d}x_{mn})可以表示为俩个矩阵对应元素相乘再对各元素求和.
在这里插入图片描述
在这里插入图片描述
(mathrm{d}hat{y})是以(mathrm{d}y) 为中心完全补零(上下各补(HH-1), 左右各补(WW-1)), (w^r)(w)左右翻转, 上下翻转后的结果.

举个例子

在这里插入图片描述

2-D (s ot =1)

在这里插入图片描述

(mathrm{d}b)

一样的

(mathrm{d}w)

[mathrm{d} w = x * mathrm{d}hat{y}, ]

其中(hat{y})是在(y)的基础上, 在行列间添加(s-1)个0.
在这里插入图片描述

(mathrm{d} x)

[mathrm{d}x = mathrm{d}hat{y} * w^r, ]

其中(w^r)和上面一样都是左右翻转加上上下翻转, (mathrm{d}hat{y})先在(mathrm{d}y)的基础上各行各列插入(s-1)零, 并在左右各补(WW-1)零, 上下各补(HH-1)零.
在这里插入图片描述

depth

加上了(C),则

[y_f=sum_c y_{fc}, ]

其中

[y_{fc} = x_c*w_{fc}+b_{fc}, ]

[frac{partial L}{partial y_fc} = frac{partial L}{partial y_{f}}, ]

剩下的就是和之前的类似的操作了.

原文地址:https://www.cnblogs.com/MTandHJ/p/12757339.html