当前位置: 首页 > news >正文

卷积神经网络(CNN)的LeNet模型

LeNet模型

LeNet是最早的卷积神经网络之一,由Yann LeCun等人在1989年提出。它主要用于手写数字识别,特别是MNIST数据集。LeNet模型的结构简单明了,适合初学者理解卷积神经网络的基本概念。

LeNet模型结构

LeNet模型通常包含以下几个主要层:

  1. 输入层:接收输入图像(例如28x28的灰度图像)。
  2. 卷积层(C1):应用多个卷积核提取特征。
  3. 激活层:通常使用Sigmoid或Tanh激活函数。
  4. 池化层(S2):进行下采样,通常使用平均池化。
  5. 卷积层(C3):进一步提取更高层次的特征。
  6. 激活层:同样使用Sigmoid或Tanh激活函数。
  7. 池化层(S4):再次进行下采样。
  8. 全连接层(C5):将特征映射展平并连接到全连接层。
  9. 输出层(F6):输出分类结果,通常使用Softmax激活函数。
LeNet的网络结构

LeNet的具体层次结构如下:

  • 输入层:28x28x1
  • 卷积层C1:6个卷积核,大小5x5,步幅1,输出尺寸:24x24x6
  • 池化层S2:2x2平均池化,输出尺寸:12x12x6
  • 卷积层C3:16个卷积核,大小5x5,步幅1,输出尺寸:8x8x16
  • 池化层S4:2x2平均池化,输出尺寸:4x4x16
  • 全连接层C5:输入为256,输出为120
  • 全连接层F6:输入为120,输出为84
  • 输出层:10个输出(数字0-9)
LeNet的Python实现

以下是使用TensorFlow和Keras实现LeNet模型的示例代码:

import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist# 加载数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape((60000, 28, 28, 1)).astype('float32') / 255
x_test = x_test.reshape((10000, 28, 28, 1)).astype('float32') / 255# 创建LeNet模型
model = models.Sequential()
model.add(layers.Conv2D(6, (5, 5), activation='tanh', input_shape=(28, 28, 1)))  # C1
model.add(layers.AveragePooling2D((2, 2)))  # S2
model.add(layers.Conv2D(16, (5, 5), activation='tanh'))  # C3
model.add(layers.AveragePooling2D((2, 2)))  # S4
model.add(layers.Flatten())  # 展平
model.add(layers.Dense(120, activation='tanh'))  # C5
model.add(layers.Dense(84, activation='tanh'))  # F6
model.add(layers.Dense(10, activation='softmax'))  # 输出层# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=5, batch_size=64)# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'Test accuracy: {test_acc}')

代码解释

  1. 加载数据:从MNIST数据集中加载手写数字图像,并进行预处理(归一化和形状调整)。
  2. 创建模型
    • 卷积层:使用Conv2D添加卷积层,指定卷积核数量和大小,以及激活函数(这里使用Tanh)。
    • 池化层:使用AveragePooling2D添加平均池化层。
    • 展平层:使用Flatten将多维特征图展平为一维。
    • 全连接层:使用Dense添加全连接层并指定神经元数量和激活函数。
    • 输出层:最后一层也是全连接层,使用Softmax激活函数输出类别概率分布。
  3. 编译模型:指定优化器、损失函数和评估指标。
  4. 训练模型:使用训练数据训练模型。
  5. 评估模型:使用测试数据评估模型的性能。

总结

LeNet是卷积神经网络的经典模型,适合用于简单的图像分类任务,如手写数字识别。其结构清晰,包含卷积层、池化层和全连接层,帮助初学者理解CNN的基本原理。通过深度学习框架(如TensorFlow和Keras),可以方便地实现LeNet模型。

http://www.dtcms.com/a/399372.html

相关文章:

  • 佛山网站外包什么是网站推广方案
  • 合肥门户网站制作建设佛山cms建站
  • Linux命令大全-usermod命令
  • Linux网络HTTP协议(上)
  • 开源 java android app 开发(十四)自定义绘图控件--波形图
  • umijs 4.0学习 - umijs 的项目搭建+自动化eslint保存+项目结构
  • 汇天网络科技有限公司苏州关键词优化软件
  • 制冷剂中表压对应温度值的获取(Selenium)
  • 建什么网站访问量高seo优化
  • 小型网站建设参考文献word超链接网站怎样做
  • 可视化 GraphRAG 构建的知识图谱 空谈版
  • 安装gitlab并上传本地项目
  • 黄页88网站免费推广网站大全网
  • 深圳附近建站公司做企业网站有什么工作内容
  • 新能源知识库(104)什么是FAT和SAT?
  • 多元函数可微性的完整证明方法与理解
  • 长春建站培训wordpress广告先显示
  • 怎么做网页版手机版网站百度竞价托管公司
  • 【寰宇光锥舟】Bash 脚本详细解释
  • 如何高效解析复杂表格
  • glog使用: 07-错误信号处理(Failure Signal Handler)
  • Netty从0到1系列之内置Handler【下】
  • java服务注册到 Nacos 及相关配置
  • 设计网站与建设wordpress网站部署
  • 扬州鼎盛开发建设有限公司网站简单的ps网页设计教程
  • 本地AI部署成趋势:LocalAl+cpolar安全指南
  • 概率编程实战:使用Pyro/PyMC3构建贝叶斯模型
  • 数据结构系列之链表
  • 194-基于Python的脑肿瘤患者数据分析可视化
  • 在 Mac 上无线挂载 Android /sdcard