LeNet-5为卷积神经网络架构的鼻祖,它是由Yann Lecun于1998年创建,已经被广泛应用于手写体数字识别
一、网络架构层 | 类型 | 特征图 | 大小 | 内核大小 | 步幅 | 激活函数 |
---|---|---|---|---|---|---|
OUT | 全连接 | —— | 10 | —— | —— | RBF |
F6 | 全连接 | —— | 84 | —— | —— | tanh |
C4 | 卷积 | 120 | 1*1 | 5*5 | 1 | tanh |
S3 | 平均池化 | 16 | 5*5 | 2*2 | 2 | tanh |
C3 | 卷积 | 16 | 10*10 | 5*5 | 1 | tanh |
S2 | 平均池化 | 6 | 14*14 | 2*2 | 2 | tanh |
C1 | 卷积 | 6 | 28*28 | 5*5 | 1 | tanh |
In | 输入 | 1 | 32*32 | —— | —— | —— |
MNIST图像为28×28像素,但是将其零填充为32×32像素并在送入网络之前进行了归一化 网络的其余部分不使用任何填充,这就是图像随着网络延展而尺寸不断缩小的原因。
平均池化层比一般的池化层要复杂一些:每个神经元计算其输入的平均值,然后将结果乘以可学习的系数(每个特征图一个) 并添加一个可学习的偏置项(同样每个特征图一个),最后应用激活函数。
C3特征图中的大多数神经元仅连接到了在S2特征图中的三个或四个神经元(而不是S2特征图中的所有6个)。有关详细信息,请参见原始论文中的表1(第8页)注10。
F6层全连接层为84,主要因为标准数字图像尺寸为12*7=84
输出层有点特殊:每个神经元输出的是输入向量和权重向量之间的欧几里得距离的平方,而不是计算输入向是和权重向量的矩阵乘法。每个输出测量图像属于特定数字类别的程度。交叉嫡成本函数现在是首选。因为它对不良预测的惩罚更大,产生更大的梯度并收敛更快。
二、激活函数LeNet-5在卷积层和池化层使用tanh激活函数,其中:
其图像为:
全连接层激活函数为RBF,每个神经元输出的是输入向量和权重向量之间的欧几里得距离的平方,而不是计算输入向是和权重向量的矩阵乘法。其中:
径向基神经网络的激活函数可表示为:
其中xp为第p个输入样本,ci为第i个中心点,h为隐含层的结点数,n是输出的样本数或分类数。径向基神经网络的结构可得到网络的输出为:
当然,采用最小二乘的损失函数表示:
三、构建LeNet-5网络from tensorflow import keras
model=keras.models.Sequential([
keras.layers.Conv2D(filters=6,kernel_size=[5,5],strides=1,padding="SAME",input_shape=(28,28,1),activation="tanh"),
keras.layers.MaxPooling2D(pool_size=2),
keras.layers.Conv2D(filters=16,kernel_size=[5,5],strides=1,padding="SAME",activation="tanh"),
keras.layers.MaxPooling2D(pool_size=2),
keras.layers.Conv2D(filters=120,kernel_size=[5,5],strides=1,padding="SAME",activation="tanh"),
keras.layers.Flatten(),
keras.layers.Dense(84,activation="tanh"),
keras.layers.Dense(10,activation="softmax")
])
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)