【tensorflow2.0】23.tf2.0实现LeNet

    手写字体识别模型LeNet5诞生于1994年,是最早的卷积神经网络之一。LeNet5通过巧妙的设计,利用卷积、参数共享、池化等操作提取特征,避免了大量的计算成本,最后再使用全连接神经网络进行分类识别,这个网络也是最近大量神经网络架构的起点。

LeNet5的网络结构示意图如下所示:
【tensorflow2.0】23.tf2.0实现LeNet_第1张图片
下边我们通过代码来实现LeNet,给出代码的同时,也会计算参数数量和维度变化。

#这里我们通过顺序模型来实现,相当于复习一下前边的内容。
#这里我们用的图片为(32,32,1)
model = tf.keras.Sequential()
#卷积层:6个卷积核,尺寸为5*5,这里产生的参数个数为5*5*6+6=156,此时图片维度(28,28,6)
model.add(tf.keras.layers.Conv2D(6,(5,5), activation='relu',input_shape=(32,32,1)))
#池化层,没有参数,维度变化为(14,14,6)
model.add(tf.keras.layers.MaxPool2D((2,2)))
#卷积层:16个卷积核,尺寸为5*5,参数个数16*(5*5*6+1)=2416,维度变为(10,10,16)
model.add(tf.keras.layers.Conv2D(16,(5,5),activation='relu'))
#池化层,维度变化为(5,5,16)
model.add(tf.keras.layers.MaxPool2D((2,2)))
#拉直,维度(400,)
model.add(tf.keras.layers.Flatten())
#全连接层,参数量400*120+120=48120
model.add(tf.keras.layers.Dense(120,activation='relu'))
#全连接层,参数个数84*120+84=10164
model.add(tf.keras.layers.Dense(84,activation='relu'))
#全连接层,参数个数10*120+10=130,
model.add(tf.keras.layers.Dense(10,activation='softmax'))

model.summary()
Model: "sequential_9"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_11 (Conv2D)           (None, 28, 28, 6)         156       
_________________________________________________________________
max_pooling2d_9 (MaxPooling2 (None, 14, 14, 6)         0         
_________________________________________________________________
conv2d_12 (Conv2D)           (None, 10, 10, 16)        2416      
_________________________________________________________________
max_pooling2d_10 (MaxPooling (None, 5, 5, 16)          0         
_________________________________________________________________
flatten_3 (Flatten)          (None, 400)               0         
_________________________________________________________________
dense_3 (Dense)              (None, 120)               48120     
_________________________________________________________________
dense_4 (Dense)              (None, 84)                10164     
_________________________________________________________________
dense_5 (Dense)              (None, 10)                850       
=================================================================
Total params: 61,706
Trainable params: 61,706
Non-trainable params: 0
_________________________________________________________________

你可能感兴趣的:(深度学习)