【深度学习】常见模型-卷积神经网络(Convolutional Neural Networks, CNN)

devtools/2025/1/23 11:29:15/

卷积神经网络(CNN)

概念简介

卷积神经网络(Convolutional Neural Networks, CNN)是一种专门用于处理数据具有网格状拓扑结构(如图像、语音)的深度学习模型。它通过卷积操作从输入数据中提取局部特征,并逐层构建更复杂的特征表示,广泛应用于图像分类、目标检测、语音识别等领域。


关键组成部分
  1. 卷积层(Convolutional Layer)

    • 使用卷积核(滤波器)在输入上滑动,提取局部特征。
    • 每个卷积核会学习一个特定的特征,例如图像的边缘、纹理等。
  2. 激活函数(Activation Function)

    • 常用 ReLU 激活函数,使模型具有非线性能力。
    • 如:ReLU(x)=max⁡(0,x)\text{ReLU}(x) = \max(0, x)ReLU(x)=max(0,x)
  3. 池化层(Pooling Layer)

    • 减少特征图的维度,降低计算复杂度,同时保留主要特征。
    • 常见方法:最大池化(Max Pooling)和平均池化(Average Pooling)。
  4. 全连接层(Fully Connected Layer, FC Layer)

    • 将提取到的特征展平并输入到全连接神经网络,用于分类或回归任务。
  5. 损失函数(Loss Function)

    • 衡量预测值与真实值之间的差异,指导模型更新参数。
    • 常用:交叉熵损失(分类)或均方误差(回归)。

CNN 工作流程
  1. 输入图像(如 28 × 28 的灰度图片)。
  2. 通过多层卷积操作提取局部特征。
  3. 经过池化层压缩特征图的尺寸。
  4. 多次迭代后,提取高层语义特征。
  5. 最后通过全连接层输出预测结果。

代码示例

以下是使用 Keras 实现简单 CNN 的示例:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense# 构建模型
model = Sequential([# 卷积层 + 激活函数Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)),# 池化层MaxPooling2D(pool_size=(2, 2)),# 第二个卷积层Conv2D(filters=64, kernel_size=(3, 3), activation='relu'),MaxPooling2D(pool_size=(2, 2)),# 展平层Flatten(),# 全连接层Dense(units=128, activation='relu'),# 输出层Dense(units=10, activation='softmax')  # 假设输出为 10 个类别
])# 编译模型
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])# 查看模型结构
model.summary()

输出结果 

Model: "sequential"
_________________________________________________________________Layer (type)                Output Shape              Param #   
=================================================================conv2d (Conv2D)             (None, 26, 26, 32)        320       max_pooling2d (MaxPooling2  (None, 13, 13, 32)        0         D)                                                              conv2d_1 (Conv2D)           (None, 11, 11, 64)        18496     max_pooling2d_1 (MaxPoolin  (None, 5, 5, 64)          0         g2D)                                                            flatten (Flatten)           (None, 1600)              0         dense (Dense)               (None, 128)               204928    dense_1 (Dense)             (None, 10)                1290      =================================================================
Total params: 225034 (879.04 KB)
Trainable params: 225034 (879.04 KB)
Non-trainable params: 0 (0.00 Byte)
_________________________________________________________________


特点
  • 参数共享:通过卷积核共享参数,降低模型复杂度。
  • 空间不变性:卷积操作具有平移不变性,适合图像任务。
  • 局部连接:仅连接相邻像素,减少计算负担。

应用场景
  1. 图像分类:如手写数字识别(MNIST 数据集)。
  2. 目标检测:如 YOLO、Faster R-CNN。
  3. 语义分割:如自动驾驶中的道路标记。
  4. 医疗图像处理:如肿瘤检测。
  5. 风格迁移:如图像艺术化处理。

优缺点

优点

  • 能有效提取图像、语音等数据的局部特征。
  • 参数少、计算高效。
  • 易于扩展和组合。

缺点

  • 对小数据集可能过拟合,需要数据增强或正则化。
  • 对时间序列数据不适用(适合使用 RNN 或 Transformer)。

CNN 是深度学习领域的一项革命性方法,其强大的特征提取能力让其成为许多视觉任务的首选工具。


http://www.ppmy.cn/devtools/152868.html

相关文章

3D可视化定制:开启个性化购物新时代,所见即所得

在当前的数字化浪潮中,3D可视化产品定制正悄然革新消费者的购物旅程与企业的营销战略。相较于众多仍局限于二维平面的在线定制服务,3D可视化产品定制为消费者解锁了一个直观互动、高度个性化的定制新天地,赋予他们沉浸式的购物享受。 通过3D…

【深度学习】傅里叶变换

[toc]深度学习中的傅里叶变换 傅里叶变换 傅里叶变换在深度学习中有着广泛的应用,尤其是在信号处理、图像处理和自然语言处理等领域。 1. 傅里叶变换基础 傅里叶变换是一种将信号从时域转换到频域的数学工具。对于连续信号,傅里叶变换定义为&#xf…

fyne 选项卡设计

用户界面的设计至关重要,它直接影响着用户体验。选卡设计作为一种常见的界面布局方式,能够有效地组织和展示信息,使用户能够方便快捷地浏览和操作。 Fyne 是一个用 Go 语言编写的跨平台 GUI 框架,它提供了丰富的组件和功能&#…

Oracle审计

审计是监控选定的用户数据库操作的过程 审计的目的: 调查可疑的数据库活动: 审计可以帮助检测和跟踪潜在的 security breaches、未授权的访问尝试或其他异常行为。通过分析审计日志,可以确定可疑活动的来源、时间、频率和影响。 收集特定数…

【Day24 LeetCode】贪心Ⅱ

一、贪心Ⅱ 1、买卖股票的最佳时机 II 122 这题第一想法是使用动态规划做&#xff0c;每天有两个状态&#xff0c;持有股票和非持有股票&#xff0c;每次计算这两个状态下的最优值。 class Solution { public:int maxProfit(vector<int>& prices) {//表示当前 没有…

李沐vscode配置+github管理+FFmpeg视频搬运+百度API添加翻译字幕

终端输入nvidia-smi查看cuda版本 我的是12.5&#xff0c;在网上没有找到12.5的torch&#xff0c;就安装12.1的。torch&#xff0c;torchvision&#xff0c;torchaudio版本以及python版本要对应 参考&#xff1a;https://blog.csdn.net/FengHanI/article/details/135116114 创…

EXCEL+Python搞定数据处理(第一部分:Python入门-第1章:为什么要用Python为Excel编程)

参考资料&#xff1a; ExcelPython飞速搞定数据分析与处理&#xff0c;[瑞士] 费利克斯朱姆斯坦 著&#xff0c;中国工信出版社、人民邮电出版社出版(“Python for Excel, by Felix Zumstein (O’Reilly). Copyright 2021 Zoomer Analytics LLC, 978-1-492-08100-5”) 将不定…

如何在Mac上优雅的使用nvm管理Node.js

Node.js作为前端的基础能力已经不仅仅是一个“JS Server Runtime”了&#xff0c;大量的工具库&#xff0c;本地包管理&#xff0c;Mock环境等&#xff0c;都基于Node.js构建了出来&#xff0c;已经名副其实的成为了前端界的基础设施。 繁荣的生态让大家在构建前端项目的时候不…