找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 18|回复: 1

CNN, RNN,LSTM的区别

[复制链接]
发表于 2025-4-14 21:11:06 | 显示全部楼层 |阅读模式
下面是对常用神经网络架构的学习笔记,包括卷积神经网络(CNN)、循环神经网络(RNN)和长短时记忆网络(LSTM)。

卷积神经网络(CNN)1. 概述
  • CNN是一种深度学习模型,主要用于处理图像数据。它利用卷积层提取图像特征,适合于图像分类、物体检测及图像生成等任务。
2. 基本构成
  • 卷积层:通过卷积操作提取图像特征,卷积核(滤波器)在图像上滑动,以捕捉局部特征。
  • 激活函数:通常使用ReLU(Rectified Linear Unit)激活函数。
  • 池化层:通过最大池化或平均池化减少特征图的尺寸,从而降低计算复杂度和防止过拟合。
  • 全连接层:在网络的最后部分,将提取出的特征映射到最终的输出或类别。
3. 架构示例
  1. import tensorflow as tf
  2. from tensorflow.keras import layers, models

  3. # 构建CNN模型
  4. model = models.Sequential()
  5. model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)))
  6. model.add(layers.MaxPooling2D((2, 2)))
  7. model.add(layers.Conv2D(64, (3, 3), activation='relu'))
  8. model.add(layers.MaxPooling2D((2, 2)))
  9. model.add(layers.Conv2D(64, (3, 3), activation='relu'))
  10. model.add(layers.Flatten())
  11. model.add(layers.Dense(64, activation='relu'))
  12. model.add(layers.Dense(10, activation='softmax'))  # 假设有10个类别的分类

  13. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
复制代码


循环神经网络(RNN)1. 概述
  • RNN是一种专门用于处理序列数据的神经网络,特别适合时间序列、文本以及音频等数据。它通过循环结构连接前一个时刻的输出,使模型具有记忆能力。
2. 基本构成
  • 输入层:输入序列数据。
  • 隐藏层:在收到当前时刻的输入和前一时刻的隐藏状态后,计算新的隐藏状态。
  • 输出层:根据每个时刻的隐藏状态输出结果。
3. 架构示例
  1. from tensorflow.keras import Sequential
  2. from tensorflow.keras.layers import SimpleRNN, Dense

  3. # 构建RNN模型
  4. model = Sequential()
  5. model.add(SimpleRNN(50, activation='relu', input_shape=(timesteps, features)))  # timesteps和features需根据数据定义
  6. model.add(Dense(1, activation='sigmoid'))  # 二分类问题

  7. model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
复制代码


长短时记忆网络(LSTM)1. 概述
  • LSTM是一种特殊的RNN,旨在解决传统RNN在处理长序列时的梯度消失和爆炸问题。通过引入门控机制,LSTM能够更好地捕捉序列中的长期依赖关系。
2. 基本构成
  • 遗忘门(Forget Gate):决定如何丢弃信息。
  • 输入门(Input Gate):确定当前输入需要添加多少新信息。
  • 输出门(Output Gate):决定下一隐藏状态的输出。
3. 架构示例
  1. from tensorflow.keras.layers import LSTM

  2. # 构建LSTM模型
  3. model = Sequential()
  4. model.add(LSTM(50, activation='relu', input_shape=(timesteps, features)))
  5. model.add(Dense(1, activation='sigmoid'))  # 二分类问题

  6. model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
复制代码


总结
  • CNN适合处理图像数据,重点在于局部特征的提取。
  • RNN适合处理顺序数据,具有记忆能力但在长序列上表现有限。
  • LSTM作为RNN的一种变体,能够更好地处理长序列数据,捕捉长期依赖关系。
学习这三种神经网络架构

 楼主| 发表于 昨天 00:21 | 显示全部楼层
123
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|星星学习网

GMT+8, 2025-4-22 08:51 , Processed in 0.099575 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表