23.大模型开发:深度学习----CNN 卷积神经网络 与 RNN 循环神经网络
前言刚入门深度学习的同学很容易搞混两件事什么时候用 CNN什么时候用 RNN。图片、照片、摄像头画面、医学影像空间结构数据 →CNN 卷积神经网络句子、语音、股价、气温时序、文字对话前后有序依赖的数据 →RNN 循环神经网络。本文整合 CNN 完整图像知识 卷积 / 池化原理、RNN 词嵌入 循环时序原理全程大白话避开晦涩公式堆砌配套全新独立案例代码不照搬原文示例从零带你吃透两大基础网络看完就能手写简单图像分类、文本处理模型。第一部分CNN 卷积神经网络 —— 专门处理图像一、图像底层基础知识看懂 CNN 的前提1. 计算机怎么看懂图片像素与通道所有图片在电脑里都是数字矩阵最小单位是像素像素取值范围0~255数值 0纯黑色数值 255纯白色中间数值是深浅过渡。图像分 4 种常见类型二值图仅 1 个通道像素只有 0、1 两种取值一般用于文字扫描、黑白线条图。灰度图单通道图像像素取值范围 0~255常应用在人脸识别、医学 X 光片等场景。索引图同样为 1 通道像素区间 0~255多用于压缩动图、色彩数量较少的图片。RGB 彩色图包含红、绿、蓝 3 个通道像素取值 0~255手机拍摄的日常照片都属于这类图像。图像存储格式约定普通读取[H, W, C]→ 高、宽、通道PyTorch 模型输入必须转成[Batch, C, H, W]批次、通道、高、宽。2. 代码实操用 matplotlib 生成 / 读取图片import numpy as np import matplotlib.pyplot as plt # 1. 生成纯黑、纯白测试图 def create_color_img(): # 200*200 三通道黑色图 black np.zeros((200, 200, 3), dtypenp.uint8) plt.imshow(black) plt.axis(off) plt.title(纯黑图像) plt.show() # 纯白图 white np.full((200, 200, 3), 255, dtypenp.uint8) plt.imshow(white) plt.axis(off) plt.title(纯白图像) plt.show() # 2. 读取本地真实图片查看尺寸 def read_local_img(): img plt.imread(test.jpg) print(f图片形状[H,W,C]{img.shape}) plt.imshow(img) plt.axis(off) plt.title(原图展示) plt.show() if __name__ __main__: create_color_img() read_local_img()二、CNN 整体概述为什么不用全连接非要卷积1. 全连接网络处理图片的致命缺陷一张 640×640 彩色图像素总量640*640*31228800全连接第一层就会产生百万级参数存在两大问题参数爆炸训练慢、极易过拟合丢失空间信息全连接把图片拍平成一维分不清上下左右无法识别边缘、轮廓。2. CNN 核心优势局部连接 权重共享局部感受野卷积核只和图片一小块区域计算不用全局连接权重共享同一个卷积核在整张图滑动一套权重复用参数量大幅降低平移不变性物体在图片左上角 / 右下角卷积都能识别同类特征。3. CNN 标准三层流水线所有图像任务通用卷积层 Conv2d提取图像特征底层边缘、纹理多层堆叠后五官、物体轮廓池化层 Pool下采样降维压缩图片尺寸保留核心特征减少计算全连接层 Linear把二维特征图展平输出分类 / 检测结果。配套激活层 ReLU卷积计算后加入非线性让网络能学习复杂图像特征。4. CNN 主流应用场景图像分类、人脸识别、自动驾驶目标检测、医学病灶识别、图像语义分割、手写数字识别。 经典 CNN 架构LeNet-5手写数字开山之作、AlexNet、VGG、GoogLeNet、ResNet解决深层网络梯度消失。三、卷积层 Conv2d图像特征提取核心1. 卷积运算底层逻辑核心操作卷积核滤波器和图片局部区域做内积。卷积核固定尺寸权重矩阵常见 3×3、5×5一个卷积核提取一类特征特征图 Feature Map原图经过卷积核滑动计算后输出的新矩阵代表提取到的纹理 / 边缘。2. 三大关键超参Padding、Stride、Kernel_size1Padding 填充在图片四周补 0 像素解决两个痛点不填充时卷积后图片持续缩小深层网络容易丢失边缘像素Same Padding填充后输出特征图尺寸 输入图片尺寸方便多层网络搭建。2Stride 步长卷积核每次滑动移动的像素数stride1逐像素滑动细节保留完整stride2隔一个像素滑动直接缩小特征图替代部分池化降维。3输出特征图尺寸计算公式W输入图片宽高F卷积核大小P填充S步长向下取整。举例5×5 图片3×3 卷积核padding1stride1N(5−32×1)/115输出仍为 5×5。3. 多通道、多卷积核计算规则RGB 三通道图像卷积卷积核通道数必须和图片通道一致3 通道每个通道单独卷积后数值相加得到单张特征图多卷积核设置 out_channelsN代表 N 个不同卷积核同时提取 N 类特征输出 N 张特征图通道数等于卷积核数量。4. PyTorch 卷积 API 实战import torch import torch.nn as nn import matplotlib.pyplot as plt # 解决中文乱码 plt.rcParams[font.sans-serif] [SimHei] # 或 Microsoft YaHei plt.rcParams[axes.unicode_minus] False def conv_image_test(): # 读取图片 img plt.imread(test.jpg) # 形状 (H, W, C)通常是 uint8 h, w, c img.shape print(f原图尺寸 H:{h}, W:{w}, C:{c}) # 1. 构建卷积层 conv nn.Conv2d(in_channels3, out_channels4, kernel_size3, stride2, padding0) # 2. 转换维度HWC → CHW → [B, C, H, W] img_tensor torch.tensor(img).permute(2, 0, 1).unsqueeze(0).float() print(f模型输入张量形状{img_tensor.shape}) # 3. 前向传播得到特征图 feature conv(img_tensor) print(f卷积输出特征图形状{feature.shape}) # 4. 取第一张特征图通道0 feat_map feature[0, 0].detach().numpy() # 形状 (H_out, W_out) # ---------- 可视化原图 特征图 并排 ---------- fig, axes plt.subplots(1, 2, figsize(10, 5)) # 左原图 axes[0].imshow(img) # 彩色显示 axes[0].set_title(原图) axes[0].axis(off) # 右特征图灰度 axes[1].imshow(feat_map, cmapgray) axes[1].set_title(卷积提取特征图 (通道0)) axes[1].axis(off) plt.tight_layout() # 自动调整子图间距 plt.show() if __name__ __main__: conv_image_test()效果图四、池化层 Pool降维压缩减少计算量1. 池化两大核心作用空间降维缩小特征图宽高大幅减少后续计算参数特征鲁棒性轻微平移、噪声不会影响特征识别降低过拟合。2. 两种主流池化MaxPool2d 最大池化窗口内取最大值保留最明显纹理 / 边缘工业最常用AvgPool2d 平均池化窗口内取平均值柔和保留全局信息多用于全局特征聚合。3. 多通道池化特点池化不会改变通道数量每个通道独立池化通道数前后保持一致。4. PyTorch 池化代码示例import torch import torch.nn as nn # 单通道池化测试 def pool_single(): # 3×3单通道矩阵 data torch.tensor([[[0,1,2],[3,4,5],[6,7,8]]], dtypetorch.float) # 最大池化 2×2窗口步长1 max_pool nn.MaxPool2d(kernel_size2, stride1) print(最大池化结果\n, max_pool(data)) # 平均池化 avg_pool nn.AvgPool2d(kernel_size2, stride1) print(平均池化结果\n, avg_pool(data)) # 多通道池化测试 def pool_multi(): # 3通道3×3数据 data torch.tensor([ [[0,1,2],[3,4,5],[6,7,8]], [[10,20,30],[40,50,60],[70,80,90]], [[11,22,33],[44,55,66],[77,88,99]] ], dtypetorch.float) pool nn.MaxPool2d(2, 1) print(多通道池化结果\n, pool(data)) if __name__ __main__: pool_single() pool_multi()第二部分RNN 循环神经网络 —— 处理文本 / 时序数据一、RNN 基础认知专门处理有序序列数据1. 什么是序列数据数据存在严格先后顺序后文依赖前文文本我 喜欢 吃 火锅词语颠倒语义完全改变时序气温、股价、传感器数据语音连续音频波形。CNN 只能处理空间静态图片无法记忆前文信息因此诞生 RNN核心是隐藏状态记忆单元每一步运算携带上一步历史信息。2. RNN 四大应用场景NLP 自然语言情感分析、机器翻译、文本生成、聊天机器人时间序列预测销量、气象、股市预测语音识别、AI 歌曲生成动作时序识别。3. RNN 完整文本处理流水线词嵌入层 Embedding → RNN 循环层 → 全连接输出层词嵌入文字转为低维数字向量RNN 层逐词读取向量用隐藏状态保存上下文记忆全连接层输出分类 / 生成词语概率。二、词嵌入层 Embedding文字数字化必经步骤1. One-hot 编码的缺点假设词表 5000 个词每个词是 5000 维稀疏向量维度爆炸计算开销巨大无法区分语义相近词语奶茶、咖啡向量完全无关。2. 词嵌入三大优势低维稠密向量几千词汇统一映射为 32/64/128 维短向量语义编码语义相近词语向量空间距离更近统一输入格式将离散文字转为神经网络可计算的数值。3. 完整工作流程句子分词 → 构建词表词→唯一索引→ 句子转为索引序列 → Embedding 查表输出词向量 → 送入 RNN。4. PyTorch nn.Embedding 案例代码奶茶短句案例import torch import torch.nn as nn # 奶茶评论语料 words [我, 爱, 喝, 珍珠奶茶, 冰奶茶, 少糖] word2idx {w:i for i,w in enumerate(words)} vocab_size len(word2idx) embed_dim 8 # 每个词映射8维向量 # 构建嵌入层 embedding nn.Embedding(num_embeddingsvocab_size, embedding_dimembed_dim) # 句子转索引 sent_idx torch.tensor([word2idx[我], word2idx[爱], word2idx[珍珠奶茶]]) vec embedding(sent_idx) print(索引序列shape, sent_idx.shape) print(词向量shape [词数量,向量维度], vec.shape) print(“珍珠奶茶”向量, embedding(torch.tensor(3)))三、RNN 循环层自带记忆的时序处理器1. 核心隐藏状态 hRNN 的短期记忆每个时间步输入两部分当前词语词向量上一步记忆​。运算后生成新记忆 ht​传递给下一个词语全程共享同一个神经元循环运算。 隐藏状态三大作用存储历史信息、理解上下文、串联所有时序步骤。2. RNN 核心计算公式更新隐藏记忆输出预测向量输出向量经过 Softmax 转为词语概率用于文本生成 / 分类。3. PyTorch nn.RNN API 介绍nn.RNN(input_size, hidden_size, num_layers1)input_size输入向量维度 词嵌入维度hidden_size隐藏记忆向量长度num_layers堆叠 RNN 层数。output, hn rnn(x, h0)输入[seq_len, batch, input_size]句子长度、批次、词向量维度初始隐藏[num_layers, batch, hidden_size]不传默认全 0所有时间步隐藏状态[seq_len, batch, hidden_size]文本生成使用最后一步全局记忆[num_layers, batch, hidden_size]文本分类使用。4. RNN 单层测试代码import torch import torch.nn as nn seq_len 6 # 单句6个词 batch_size 4 # 4条句子一批 embed_dim 8 # 词向量维度 hidden_dim 16# 记忆向量长度 rnn nn.RNN(input_sizeembed_dim, hidden_sizehidden_dim, num_layers1) # 模拟一批词向量数据 inputs torch.randn(seq_len, batch_size, embed_dim) # 初始化隐藏状态 h0 torch.zeros(1, batch_size, hidden_dim) output, hn rnn(inputs, h0) print(全部时间步输出shape, output.shape) # [6,4,16] print(最终全局记忆hn shape, hn.shape) # [1,4,16]参数匹配规则四、案例RNN 文本情感分类模型奶茶好评 / 差评import torch import torch.nn as nn # 超参数 VOCAB_NUM 12 EMBED_DIM 16 HIDDEN_DIM 32 LAYERS 1 CLASS_NUM 2 # 二分类好评0差评1 class MilkTeaSentimentRNN(nn.Module): def __init__(self): super().__init__() self.embedding nn.Embedding(VOCAB_NUM, EMBED_DIM) self.rnn nn.RNN(EMBED_DIM, HIDDEN_DIM, LAYERS) self.fc nn.Linear(HIDDEN_DIM, CLASS_NUM) def forward(self, x): emb self.embedding(x) _, hn self.rnn(emb) hn hn.squeeze(0) # 去除层数维度 out self.fc(hn) return out if __name__ __main__: model MilkTeaSentimentRNN() # 模拟3条评论每条5个词 test_input torch.randint(0, VOCAB_NUM, (5, 3)) pred model(test_input) print(模型输出 [批次,分类数], pred.shape)第三部分CNN 与 RNN 核心对比 相关问题一、CNN vs RNN 适用场景清晰区分表格网络处理数据核心能力核心结构典型任务CNN 卷积网络图像、空间二维数据提取局部空间特征、平移不变卷积层 池化层图像分类、人脸识别、目标检测RNN 循环网络文本、时序一维有序数据记忆历史上下文、建模先后依赖词嵌入 循环隐藏层情感分析、股价预测、文本生成二、相关问题CNN 相关卷积核为什么多用 3×3 多个 3×3 堆叠可以替代大卷积核参数量更少、非线性更强VGG 网络标准设计。池化会不会丢失信息 只会丢弃无关细节保留最强特征现代网络也常用 stride2 卷积替代池化。图片输入为什么要转 [B,C,H,W] PyTorch 卷积层通道维度放在第二维符合 GPU 并行计算优化规范。RNN 相关output 和 hn 什么时候用 逐词生成任务写诗、翻译用 output整条句子分类只用最后一步 hn。基础 RNN 有什么缺陷 长文本会出现梯度消失远距离前文记忆丢失工业改用 LSTM/GRU。词嵌入维度怎么选 短评论短句 32/64 维长文章、大语料 128/256 维维度越大语义承载越多训练更慢。全文总结CNN 卷积神经网络针对图像空间数据依靠卷积核提取边缘 / 纹理特征池化层降维压缩核心三组件卷积 Conv2d、池化 Pool、全连接 Linear掌握尺寸计算公式与 PyTorch 卷积 / 池化 API 即可搭建简易图像分类模型。RNN 循环神经网络针对有序序列文字、时序依靠隐藏状态存储上下文记忆文本处理固定流程分词→词嵌入 nn.Embedding→nn.RNN 循环层→全连接输出适合 NLP、时间序列预测任务。两大网络是深度学习入门基石CNN 负责视觉、RNN 负责文本与时序理解基础原理后后续学习 ResNet、LSTM、Transformer 等进阶模型会事半功倍。文中所有代码均为全新独立案例不照搬原文示例新手可直接复制运行调试直观观察网络输出变化。

相关新闻

WaveTools终极指南:如何快速解锁《鸣潮》120帧画质体验

WaveTools终极指南:如何快速解锁《鸣潮》120帧画质体验

WaveTools终极指南:如何快速解锁《鸣潮》120帧画质体验 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为《鸣潮》游戏画面卡顿而烦恼吗?想要让高端显卡发挥全部实力&#xff0…

2026/7/12 2:37:31阅读更多 →
多端看文件工具大揭秘:手机、电脑、电视无缝切换不是梦

多端看文件工具大揭秘:手机、电脑、电视无缝切换不是梦

一、引言在数字化时代,我们的工作和生活越来越依赖于各种电子设备。无论是在办公室的电脑前紧张地准备工作汇报,还是在家里的沙发上惬意地用手机或电视浏览资料,又或是在外出途中通过平板处理紧急事务,多端看文件的需求日益频繁。…

2026/7/12 2:37:31阅读更多 →
TB67H480FNG与MK64FN1M0VDC12在工业控制中的黄金组合

TB67H480FNG与MK64FN1M0VDC12在工业控制中的黄金组合

1. 为什么选择TB67H480FNG与MK64FN1M0VDC12这对黄金组合在工业控制和嵌入式系统开发领域,电机驱动与主控MCU的选型往往决定了整个项目的性能上限。TB67H480FNG作为东芝(现为佳能电子)推出的高效能步进电机驱动芯片,与NXP的MK64FN1…

2026/7/12 2:37:31阅读更多 →
R语言卡方检验实战:从期望频数到残差热图的全流程解析

R语言卡方检验实战:从期望频数到残差热图的全流程解析

1. 这不是统计课本里的公式推演,而是R里真正跑得通的卡方检验实战手册如果你在R里敲下chisq.test()却对着输出结果发懵——p值下面那堆Expected counts到底怎么来的?残差是正还是负才说明“比预期多”?为什么明明两组比例看着差挺大&#xff…

2026/7/12 3:57:38阅读更多 →
直流负载管理优化:G6D-ASI继电器与MK24FN256VDC12控制方案

直流负载管理优化:G6D-ASI继电器与MK24FN256VDC12控制方案

1. 直流负载管理的挑战与优化思路在工业控制和电力电子领域,直流负载管理一直是个棘手的问题。我最近参与的一个自动化产线改造项目就遇到了典型情况:原有系统使用普通继电器控制24V直流电机群组,运行三年后接点烧蚀率高达37%,平均…

2026/7/12 3:57:38阅读更多 →
【html+css】适合初学者练手的登录界面

【html+css】适合初学者练手的登录界面

文章目录绪论一、新建一个html项目1. 创建项目文件夹与文件2. 使用 Emmet 快速生成 HTML5 骨架3. 使用 Live Server 实时预览页面二、构建 HTML 结构框架1. 理解 div 与 span 标签(容器元素)2. 登录界面框架设计三、 使用css美化界面绪论 本文旨在为零基…

2026/7/12 3:57:38阅读更多 →
程序合成:从自然语言到可验证代码的工程化实践

程序合成:从自然语言到可验证代码的工程化实践

1. 这不是科幻,是正在发生的代码革命:从“写代码”到“说需求”的范式迁移“Program Synthesis — Making Code Write Itself”这个标题乍看像极了某部硬核科幻片的副标题,但如果你最近翻过ACM SIGPLAN的会议论文集、刷过GitHub上star破万的开…

2026/7/12 3:57:38阅读更多 →
模切辅料权威厂家

模切辅料权威厂家

在讨论模切辅料权威厂家时,我们可以聚焦于深圳市鼎顺莱新材料有限公司(简称:鼎顺莱新材料),这是一家在深圳光明区拥有良好声誉的公司。鼎顺莱新材料专注于提供包括导电泡棉、散热石墨片在内的多种电子辅助材料&#xf…

2026/7/12 3:57:38阅读更多 →
从电信计费到软件设计:1个计费系统如何应对3类业务规则变化

从电信计费到软件设计:1个计费系统如何应对3类业务规则变化

从电信计费到软件设计:弹性架构如何应对多变的业务规则在电信行业,计费系统堪称业务复杂度的"试金石"。一个市级电信公司的计费规则可能包含数十种套餐类型、数百种资费组合,且每月都有新套餐推出、旧套餐调整。这种高频变化的业务…

2026/7/12 3:52:38阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/12 0:02:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/12 0:02:11阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/12 0:02:11阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/12 0:02:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/12 0:02:11阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/12 0:02:11阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/11 16:20:28阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/11 23:15:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/11 18:12:23阅读更多 →