卷积
目录
整理一下, 关于卷积层梯度反向传递的过程.
注: \(s\not=1\)的部分是自己推得, 可能是错的(自己想了很久, 感觉错的机会不大).
符号

输入: \(x \in \mathbb{R}^{N \times C \times H \times W}\);
权重: \(w \in \mathbb{R}^{F \times C \times HH \times WW}\);
biases: \(b\);
输出:\(y \in \mathbb{R}^{N \times F \times H' \times 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\not =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}},
\]
剩下的就是和之前的类似的操作了.

浙公网安备 33010602011771号