卷积

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

参考
参考

注: \(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}}, \]

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

posted @ 2020-04-22 22:24  馒头and花卷  阅读(267)  评论(0)    收藏  举报