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

机器学习06卷积神经网络CNN

一:概念

卷积神经⽹络,简称为卷积⽹络,与普通神经⽹络的区别是它的卷积层内的神经元只覆盖输⼊特征局部范围的单元,具有稀疏连接(sparse connectivity)和权重共享(weight shared)的特点,⽽且其中的过滤器可以做到对图像关键特征的抽取。因为这⼀特点,卷积神经⽹络在图像识别⽅⾯能够给出更好的结果。

二:卷积层原理

卷积⽹络是通过卷积层(Conv2D层)中的过滤器(filter)⽤卷积计算对图像核⼼特征进⾏抽取,从⽽提⾼图像处理的效率和准确率。


机器是通过模式(pattern)进⾏图像的识别。优越性是平移不变性,在图像中学习到某个模式,它就可以在任何地⽅识别这个模式。图像对于计算机来说就是一个矩阵。

  1. ⽤滑动窗⼝抽取局部特征
  2. 过滤器进⾏卷积计算(卷积核),进⾏图像特征的提取。不同过滤器(卷积核)抽取不同的特征

卷积的原理:抠图,卷积核对抠下来的图进⾏运算,形成响应通道。填充和步幅。

model.add(Conv2D(filters=32, # 添加Conv2D层, 指定过滤器的个数, 即通道数 kernel_size=(3, 3), # 指定卷积核的⼤⼩ activation='relu', # 指定激活函数 input_shape=(28, 28, 1))) # 指定输⼊数据样本张量的类型

卷积和池化计算原理请看b站。懒得写了。
卷积计算:直接相乘加一起。(普通乘法不是矩阵乘法)

填充(padding)操作。填充就是在输⼊特征图的边缘添加适当数⽬的空⽩⾏和空⽩列,使得每个输⼊块都能作为卷积窗⼝的中⼼,然后卷积运算之后,输出特征图的维度将会与输⼊维度保持⼀致。

填充操作并不是⼀个必需选项。如果需要,可以通过Conv2D层的padding参数设置:model.add(Conv2D(filters=32,#过滤器kernel_size=(3,3),# 卷积核⼤⼩strides=(1,1),# 步幅padding='valid'))# 填充

步幅(stride)
影响输出尺⼨的另⼀个因素是卷积操作过程中,窗⼝滑动抽取特征时候的步幅(stride)

三,池化层

池化层的功能是对特征图进⾏下采样。在最⼤池化之后,特征维度的尺⼨基本上都会减半。
最⼤池化的原理和卷积有些类似,也是从输⼊特征图中提取窗⼝。但是最⼤池化使⽤固定的张量运算对局部图块进⾏变换,输出每个通道的最⼤值,⽽不是像卷积核那样,权重是通过学习⽽得到的。
池化也有填充和步幅,只不过最大池化是取区域内最大值而不是像卷积相乘。

四,性能优化

  1. 第⼀招:更新优化器并设置学习速率
cnn.compile(loss='categorical_crossentropy',# 损失函数optimizer=optimizers.Adam(lr=1e-4),# 更新优化器并设定学习速率metrics=['acc'])# 评估指标
  1. 第⼆招:添加Dropout层,降低过拟合⻛险。
  2. 进⾏数据增强

数据增强:

把⼀张图像当成7张、8张甚⾄10张、100张来⽤。
是通过对图像的平移、颠倒、倾斜、虚化、增加噪声等多种⼿段。这是利⽤能够⽣成可信图像的随机变换来增加样本数,如下图所示。这样,训练集就被⼤幅地增强了,⽆论是图像的数⽬,还是多样性。因此,模型在训练后能够观察到数据的更多内容,从⽽具有更好
的准确率和泛化能⼒。

在Keras中,可以⽤ImageData- Generator⼯具来定义⼀个数据增强器:# 定义⼀个数据增强器, 并设定各种增强选项from keras.preprocessing.imageimportImageDataGenerator augsgen=ImageDataGenerator(featurewise_center=False,samplewise_center=False,featurewise_std_normalization=False,samplewise_std_normalization=False,zca_whitening=False,rotation_range=10, zoom_range=0.1,width_shift_range=0.2,height_shift_range=0.2,horizontal_flip=True,vertical_flip=False)augs_gen.fit(X_train)# 针对训练集拟合数据增强器

⽹络还是⽤回相同的⽹络,唯⼀的区别是在训练时,需要通过fit_generator⽅法动态⽣成被增强后的训练集:

history=cnn.fit_generator(# 使⽤fit_generatoraugs_gen.flow(X_train, y_train,batch_size=16),# 增强后的训练集validation_data=(X_test, y_test),# 指定验证集validation_steps=100,# 指定验证步⻓steps_per_epoch=100,# 指定每轮步⻓epochs=50,# 指定轮次verbose=1)# 指定是否显示训练过程中的信息
http://www.jsqmd.com/news/639151/

相关文章:

  • CefFlashBrowser:3大核心功能让经典Flash内容在现代系统完美运行
  • 深聊食品级干冰品牌供应商,如何选择性价比高的零售商 - 工业设备
  • 题解:P3526 [POI 2011] OKR-Periodicity
  • STM32F103RCT6开发板实战:从摇杆控制到蓝牙通信的PCB设计全流程
  • 实力强的湖南置湘有哪些服务,为你梳理业务指南 - myqiye
  • 面试官: 为什么需要链路追踪在分布式系统中(答案深度解析)持续更新
  • Anaconda环境配置与高效开发实践指南
  • Redis 热点 Key 自动检测方案
  • SmolVLA应用场景:盲人辅助机器人中触觉反馈+视觉语言动作联合推理
  • 别再手动统计零件了!基于CATIA二次开发的BOM自动化工具深度评测与避坑指南
  • 防跑单工具
  • 分期乐永辉超市卡套装领取、回收攻略+真实案例,10分钟变现不亏 - 畅回收小程序
  • 2026最新四川家装公司口碑TOP5排行榜 全川服务 - 深度智识库
  • LabVIEW多任务测控系统
  • Realistic Vision V5.1 提示词工程入门:从C语言逻辑理解提示词的语法与结构
  • SAM 2图像分割实战:从环境搭建到跑通第一个AI示例(含改进版代码)
  • 如何用Topit实现Mac窗口永久置顶:告别窗口切换困扰的终极方案
  • 全网资源下载终极指南:用res-downloader轻松获取视频号、QQ音乐、抖音内容
  • 深度挖掘AMD Ryzen性能:SMUDebugTool终极硬件调试指南
  • 2026最权威的六大降重复率神器横评
  • 2026新手妈妈选奶粉必看避坑指南:婴儿羊奶粉选购深度解析 - 深度智识库
  • 突破网盘技术壁垒:LinkSwift直链提取工具的技术深度解析与实战指南
  • 从汽车ECU的‘闪电侠’与‘管家’:聊聊AUTOSAR中Category 1/2中断的设计哲学
  • 智能音频革命:WX-0813 DSP模组全解析
  • 2026年4月药用级卡波姆的采购渠道与生产供应体系解析 - 品牌推荐大师1
  • 从需求到代码:我是如何用SSTS和CTS文档搞定车载语音助手项目的
  • 2026年4月药用级羧甲纤维素钠的供应链解析:质量特性与采购成本的最优平衡 - 品牌推荐大师1
  • 算法——问题转换,正难则反
  • DeepPCB深度解析:如何用1500对图像解决PCB缺陷检测的三大技术难题
  • OFA图像描述模型实测分享:多场景图片描述效果对比