卷积操作
% ------------------------------------
%关于卷积操作
%
% date 2019/05/14
% by Dufy
%
% ------------------------------------
clc
clear
close all
format compact
a=[0 1 2;3 4 5;6 7 8];
b=[0 1;2 3];
conv(a,b)
function A=conv(mat, filter)
[row, line] = size(mat);%行,列
[row1, line1] = size(filter);%行,®列
for j=1:row-row1+1
for i=1:line-line1+1
A(j,i)=sum(sum(mat(j:j+row1-1,i:i+line1-1).*filter));
end
end
end
ans =
19 25
37 43
卷积操作的本质:
- 稀疏交互
不同于全连接网络,卷积操作具有稀疏交互。也就是,输出只与输入的局部产生联系。物理意义是,现实世界中的数据都有局部的特征结构,我们可以先学习局部的特征,再将局部的特征组合起来,形成更复杂和抽象的特征。
- 参数共享
卷积操作时候,用同一个卷积核对图片的不同位置进行操作,不管图片有多大,均共享同一套参数矩阵。
物理意义是平移不变性。即使图像进行了一定的平移,我们仍可将目标识别出来。
多通道卷积操作[1]:
具体操作如下:
注意,原始的彩色3通道经过卷积后变成了1维
--------总结如下[2]:
考虑如下例子,filters 10个:
则需要的参数个数是10(3*3*3+1)=280
总结:
卷积层和池化层区别
卷积层核池化层在结构上具有一定的相似性,都是对感受域内的特征进行提取,并且根据步长设置获取到不同维度的输出,但是其内在操作是有本质区别的,如表所示。
卷积参数计算
以LeNet为例[3],
其中,关于连接数量[4]:
2. 连接数量:
全连接:
输入层神经元数量*输出层神经元数量
CNN局部连接: 故由于局部连接机制,卷积层的连接数为: 局部连接的输入层神经元数*卷积层神经元数
参考
- ^Lenet卷积可视化 http://scs.ryerson.ca/~aharley/vis/conv/
- ^【DL笔记6】从此明白了卷积神经网络(CNN https://zhuanlan.zhihu.com/p/42559190
- ^经典的卷积网络架构(一)——LeNet-5详解 http://www.manongjc.com/article/37048.html
- ^CNN卷积层神经元数量、连接数量、权重数量的计算 https://blog.csdn.net/u013793650/article/details/78250152