【参考资料】
【1】https://www.zhihu.com/question/20500497/answer/45708002
1 卷积逆向计算原理
假设:
1、某一时刻发生一个冲击响应 x(0),例如往水中丢入一个石块;
2、该冲击响应伴随一个衰减 h(t),此衰减与时间相关;
则存在:
1、当t=0时,当前时刻的总响应为 y(0) = x(0) * h(0)
2、当t=1时,当前时刻的总响应为 y(1) = x(0) * h(1) + x(1) * h(0)
3、当t=2时,当前时刻的总响应为 y(2) = x(0) * h(2) + x(1) * h(1) + x(2) * h(0)
4、当t=k时,当前时刻的总响应为 y(k) = x(0) * h(k) + x(1) * h(k-1) + ... + x(k) * h(0)
2 卷积的数学定义
2.1 一维卷积信号定义
- 数学定义【离散】
y
(
n
)
=
∑
i
=
−
∞
∞
x
(
i
)
∗
y
(
n
−
i
)
y(n) = \sum_{i=-\infty}^{\infty} x(i) * y(n - i)
y(n)=∑i=−∞∞x(i)∗y(n−i)
- 举例:
存在信号 a = [1,2,3,4]、信号 b = [1,2,3],求卷积 a * b。
由上述数学公式定义可知,存在如下公式:
(
a
∗
b
)
[
n
]
=
∑
m
=
0
3
a
(
m
)
∗
b
(
n
−
m
)
(a * b)[n] = \sum_{m = 0}^3 a(m) * b(n - m)
(a∗b)[n]=∑m=03a(m)∗b(n−m),于是可依次类推
(
a
∗
b
)
[
0
]
=
a
[
0
]
∗
b
[
0
]
(a * b)[0] = a[0] * b[0]
(a∗b)[0]=a[0]∗b[0]
(
a
∗
b
)
[
1
]
=
a
[
0
]
∗
b
[
1
]
+
a
[
1
]
∗
b
[
0
]
(a * b)[1] = a[0] * b[1] + a[1] * b[0]
(a∗b)[1]=a[0]∗b[1]+a[1]∗b[0]
(
a
∗
b
)
[
2
]
=
a
[
0
]
∗
b
[
2
]
+
a
[
1
]
∗
b
[
1
]
+
a
[
2
]
∗
b
[
2
]
(a * b)[2] = a[0] * b[2] + a[1] * b[1] + a[2] * b[2]
(a∗b)[2]=a[0]∗b[2]+a[1]∗b[1]+a[2]∗b[2]
通常用图解法计算时则分为两步,如求 (a * b)[0] 时:
第一步:将 b 进行反转为 [3, 2, 1]
第二步:移位计算如下图所示:
2.2 二维卷积信号定义
- 数学定义【离散】
- 举例
二维卷积信号,特别是针对卷积神经网络或图像处理时也同样遵循所谓的反转、移动、乘积。例如有一个三维卷积核:
则进行反转后叠加到原图片中进行平移计算,此处与图像处理的过滤、均值等保持一致。所以图像上叠加一个均值滤波的卷积算子,就可以理解为这个二维信号被叠加了一个衰减。
3 卷积核输入和输出的换算
备注:此处的参考文献暂时找不到,是参考网上材料
上图中 3 * 3 * 3 的卷积核在 6 * 6 * 3 的数据中滑动,由于z轴维度一致,因此只在x轴和y轴上屏蔽,其屏蔽后产生的结果数据为 4 * 4。
在卷积神经网络中还存在几个主要参数,包括滑动步长和卷积核数量,因此实际的输出推到中如下:
上例中输入为 2272273的向量,卷积核为 96个11113的卷积核,步长为4,由此:
● 11宽度的卷积核在227宽度的输入向量中,以步长4滑动 (227 - 11)/4 + 1 = 55
● 96个卷积核,即发生了96次卷积操作,生成向量为 555596
重要备注:
输入: 3通道的6 * 6图像 3 * 6 *6
卷积核: 2个3 * 3的卷积核 2 * 3 * 3 * 3
卷积结果: 2个4 * 4的图像
也就是说当这一层定义卷积核时,该卷积除了长和宽外还有一个通道维度,这个维度永远等于输入层的通道数。
4 池化操作
将上述图像在 2 * 2的范围内取最大值,同时平移的间隔也是2。因此其输出是一个 2 * 2 的数据
版权声明:本文为CSDN博主「Fred-XU」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Fredric_2014/article/details/122702610
暂无评论