跳至内容
深圳市捷比信实业有限公司 · 产品选型与采购咨询联系业务人员
薄膜电阻捷比信 · 专业器件主题站

卷积神经网络(CNN)的简要介绍和代码实现

有关卷积神经网络(CNN)的基本介绍,请参见此处,它主要基于代码实现。 CNN是一个多层神经网络,每层由多个二维平面组成,每个平面由多个独立的神经元组成。使用MNIST作为数据库,模仿LeNet-5和TIny-cnn()设计一个简单的7层CNN结构,如下所示:输入层输入:神经元数32 * 32 = 1024; C1层:卷积窗口大小5 * 5,输出特征图号6,卷积窗口类型6,输出特征图大小28 * 28,可训练参数(权重+阈值(偏差))5 * 5 * 6 + 6 = 150 + 6 ,神经元数28 * 28 * 6 = 4704; S2层:卷积窗口大小2 * 2,输出下采样图像数6,卷积窗口类型6,输出下采样图像大小14 * 14,可训练参数1 * 6 + 6 = 6 + 6,神经元数14 * 14 * 6 = 1176; C3层:卷积窗口大小5 * 5,输出特征图号16,卷积窗口类型6 * 16 = 96,输出特征图大小10 * 10,可训练参数5 * 5 *(6 * 16)+ 16 = 2400 + 16 ,神经元数为10 * 10 * 16 = 1600; S4层:卷积窗口的大小为2 * 2,输出下采样图像的数量为16,卷积窗口的类型为16,输出下采样图像的尺寸为5 * 5,可训练参数为1 * 16 + 16 = 16 + 16,神经元数5 * 5 * 16 = 400; C5层:卷积窗口大小5 * 5,输出特征图号120,卷积窗口类型16 * 120 = 1920,输出特征图大小1 * 1,可训练参数5 * 5 *(16 * 120)+ 120 = 48000 + 120 ,神经元数1 * 1 * 120 = 120;输出图层输出:卷积窗口大小1 * 1,输出特征图号10,卷积窗口类型120 * 10 = 1200,输出特征图大小1 * 1,可训练参数1 *(120 * 10)+ 10 = 1200 + 10。神经元的数量为1 * 1 * 10 = 10。下面描述实现过程:1.从MNIST数据库中获取训练样本和测试样本数据:(1)原始MNIST数据库中的图像大小为28 * 28,此处放大为32 * 32,数据值为范围是[-1,1],并且扩展值都为-1;总共60,000个32 * 32训练样本,10,000个32 * 32测试样本; (2)输出层有10个输出节点,在训练阶段,相应的位置的节点值设置为0.8,其他节点设置为-0.8.2。初始化权重和阈值(偏差):权重是卷积图像,并且特征图上的每个神经元共享相同的权重和阈值。特征图的数量等于阈值的数量(1),权重通过统一兰德方法初始化; (2),阈值被初始化为0.3。前向传播:根据权重和阈值,主要计算出每层神经元的值。(1)输入层:每次输入一个32 * 32数据。 (2)层C1:将每个5×5的卷积图像乘以32×32的图像,得到28×28的图像,即相加相应的位置再相加,步幅为1;总共六个5 * 5卷积图像,然后向每个神经元添加阈值,最后通过tanh激活函数计算每个神经元,以获得每个神经元的最终结果。 (3)S2层:从C1中的6个28 * 28特征图生成6个14 * 14下采样图,分别对四个相邻神经元进行加法和求和,然后乘以权重,然后将平均值除以4,然后添加一个阈值。最后,tanh激活函数用于对每个神经元执行操作以获得每个神经元的最终结果。 (4),C3层:从S2中的6个14 * 14下采样图生成16个10 * 10特征图。对于每个生成的10 * 10特征图,它由6个5 * 5卷积组成。将图像与6张14 * 14下采样图像相乘,然后相加并求和相应的位置,然后将阈值添加到每个神经元,并最后,通过tanh激活函数计算每个神经元,以获得最终的每个神经元的结果。 (5)S4层:从C3中的16个10 * 10特征图生成16个5 * 5下采样图。分别将四个相邻的神经元相加并相加,然后乘以权重值,然后计算得出平均值除以4,然后加上阈值,最后,使用tanh激活函数来计算每个神经元以获得每个神经元的最终结果。 (6),C5层:从S4中的16个5 * 5下采样图像生成120个1 * 1特征图。对于每个生成的1 * 1特征图,它由16张5 * 5卷积图像组成。要乘以16张5 * 5下层图像,然后相加并求和,然后向每个神经元添加阈值,最后通过tanh激活来计算每个神经元函数获得每个神经元结果的最终值。 (7)输出层:完全连接的层。输出层中的每个神经元乘以C5层中的120个神经元乘以相应的权重,然后相加并求和;然后每个神经元向元素添加一个阈值,最后计算出结果