免责声明:网站内容仅供个人学习记录,禁做商业用途,转载请注明出处。

版权所有 © 2017-2020 NEUSNCP个人学习笔记 辽ICP备17017855号-2

卷积神经网络(CNN)与循环神经网络(RNN)原理入门

xxm0326    2025年5月8日 14:31:46

随着深度学习的快速发展,卷积神经网络(CNN)和循环神经网络(RNN)已经成为计算机视觉和序列建模中的两大核心模型。本文将简要介绍它们的基本原理、应用场景,并通过示例代码展示它们的基本使用方式。


一、卷积神经网络(CNN)

1. 原理简介

CNN 是专为图像处理设计的一类深度神经网络,它利用局部感受野、权值共享和池化操作,显著降低了参数数量,并提高了图像识别任务的效果。

核心组成部分包括:

  • 卷积层(Convolutional Layer):提取图像局部特征。

  • 激活函数(如 ReLU):引入非线性能力。

  • 池化层(Pooling Layer):降维和增强特征鲁棒性。

  • 全连接层(Fully Connected Layer):完成最终的分类或回归任务。

2. 典型应用

  • 图像分类(如 MNIST、ImageNet)

  • 目标检测(YOLO、Faster R-CNN)

  • 图像分割(U-Net)

3. 示例代码(使用 PyTorch)

import torch
import torch.nn as nn
import torch.nn.functional as F

class SimpleCNN(nn.Module):
    def __init__(self):
        super(SimpleCNN, self).__init__()
        self.conv1 = nn.Conv2d(1, 16, kernel_size=3, padding=1)
        self.pool = nn.MaxPool2d(2, 2)
        self.fc1 = nn.Linear(16 * 14 * 14, 10)  # 28x28 input, pooled to 14x14

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = x.view(-1, 16 * 14 * 14)
        x = self.fc1(x)
        return x

# 示例输入:一张 28x28 的灰度图
model = SimpleCNN()
dummy_input = torch.randn(1, 1, 28, 28)
output = model(dummy_input)
print("CNN输出:", output)

二、循环神经网络(RNN)

1. 原理简介

RNN 适合处理序列数据(如文本、时间序列)。它通过隐藏状态(hidden state)在时间步之间传递信息,使模型具有记忆前文的能力。

存在梯度消失问题的传统 RNN,已逐渐被以下改进结构取代:

  • LSTM(长短期记忆网络)

  • GRU(门控循环单元)

2. 典型应用

  • 语言建模与文本生成

  • 语音识别

  • 时间序列预测

3. 示例代码(使用 PyTorch)

import torch
import torch.nn as nn

class SimpleRNN(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(SimpleRNN, self).__init__()
        self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)
        self.fc = nn.Linear(hidden_size, output_size)

    def forward(self, x):
        out, _ = self.rnn(x)
        out = self.fc(out[:, -1, :])  # 只取最后一个时间步
        return out

# 假设序列长度为5,每个时间步输入为10维
model = SimpleRNN(input_size=10, hidden_size=20, output_size=1)
dummy_input = torch.randn(3, 5, 10)  # batch_size=3
output = model(dummy_input)
print("RNN输出:", output)
 

三、CNN 与 RNN 的对比总结

特性 CNN RNN
数据类型 空间数据(图像) 时序数据(文本、语音)
结构特点 局部连接、权重共享 时序连接、状态传递
典型应用 图像分类、目标检测 文本生成、机器翻译
可并行性 高(卷积操作) 低(时间步依赖)
输入维度 固定大小的图像 可变长度的序列


卷积神经网络(CNN)和循环神经网络(RNN)分别擅长处理不同类型的数据结构,模型结构对比如下图所示。
 

最近更新: 2025年5月8日 14:53:51
浏览: 47

[[total]] 条评论

添加评论
  1. [[item.time]]
    [[item.user.username]] [[item.floor]]楼
  2. 点击加载更多……
  3. 添加评论