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

深度学习模型构建的本质——“核心四要素+任务适配逻辑”

“核心四要素”: 卷积(提取局部特征)、池化(压缩维度/保留关键信息)、全连接(整合全局特征)、激活函数(修正输出)
任务适配逻辑:
输出维度匹配任务(比如分类输出“类别数”),确保模型输出符合要求;
激活函数修正输出(比如分类用softmax, 回归用Linear), 让输出符合任务逻辑(概率/数值);
损失函数引导学习(比如分类用交叉熵,回归用CloU),通过梯度下降让模型不断逼近“正确答案”。

即使是复杂的Transformer、ViT等模型,本质上也是在这个逻辑上做了“组件升级”(比如用自注意力替代部分卷积),但“输出维度、激活函数、损失函数适配任务”的核心逻辑从未变过。

以下用 “图像分类(区分猫 / 狗 / 汽车 3 类)” 任务,把上面提到的核心要素串成完整流程,直观展示各部分如何配合工作。

import torch
import torch.nn as nn
import torch.nn.functional as F# 1. 用“卷积+池化+全连接”搭网络框架(基础组件)
class SimpleImageClassifier(nn.Module):def __init__(self):super().__init__()# 卷积+池化:提取图像局部特征(如边缘、纹理)self.conv1 = nn.Conv2d(3, 16, kernel_size=3, padding=1)  # 3通道→16通道 输出:1*16*256*256self.pool = nn.MaxPool2d(2)  # 下采样:尺寸减半,压缩维度 输出:1*16*128*128 self.conv2 = nn.Conv2d(16, 32, kernel_size=3, padding=1) # 16通道→32通道 输出:1*32*128*128# 全连接:整合全局特征,输出匹配任务的维度self.fc1 = nn.Linear(32 * 64 * 64, 128)  # 卷积输出→128维(中间层)输出:size:128self.fc2 = nn.Linear(128, 3)  # 128维→3维(输出维度=类别数,匹配分类任务)输出:size:3def forward(self, x):# 卷积+激活(ReLU修正输出,引入非线性)x = self.pool(F.relu(self.conv1(x)))  # 输入→卷积→ReLU激活→池化 输出:1*16*128*128x = self.pool(F.relu(self.conv2(x)))  # 再次卷积→激活→池化 输出:1*32*64*64# 全连接层:整合特征x = x.view(-1, 32 * 64 * 64)  # 展平特征图→一维向量 输出:一维 131072x = F.relu(self.fc1(x))  # 全连接→ReLU激活(修正输出)输出:128x = self.fc2(x)  # 输出3维结果(未激活,后续用Softmax) 输出:3return x# 2. 定义“损失函数”引导学习(分类任务用交叉熵损失)
criterion = nn.CrossEntropyLoss() #结合热编码label:[0,1,0] output:[0.34,0.36,0.30] 
#loss = 0*log(0.34)+1*log(0.36)+0*log(0.3)# 3. 模拟训练流程(核心要素协作)
if __name__ == "__main__":# 模拟输入:1张3通道RGB图(尺寸256×256),标签“1”(代表“狗”,0=猫/1=狗/2=汽车)input_img = torch.randn(1, 3, 256, 256)  # [batch, 通道, 高, 宽]label = torch.tensor([1], dtype=torch.long)  # 真实标签# 初始化模型和优化器(梯度下降的执行者)model = SimpleImageClassifier()optimizer = torch.optim.SGD(model.parameters(), lr=0.01)# 一次训练迭代(完整流程)optimizer.zero_grad()  # 清空梯度output = model(input_img)  # 模型前向传播:输出3维结果(如[0.2, 0.5, 0.3])loss = criterion(output, label)  # 计算损失:衡量预测与真实的差距loss.backward()  # 反向传播:计算梯度optimizer.step()  # 梯度下降:更新模型参数,让下次预测更准# 查看最终分类结果(激活函数修正输出为概率)pred_prob = F.softmax(output, dim=1)  # Softmax激活:转化为0~1的类别概率pred_class = torch.argmax(pred_prob, dim=1)  # 取概率最大的类别print(f"预测类别概率:{pred_prob.detach().numpy()}")  # 如[0.2, 0.6, 0.2]print(f"预测类别:{pred_class.item()}(0=猫/1=狗/2=汽车)")

http://www.dtcms.com/a/449333.html

相关文章:

  • 基于SpringBoot+Vue的志行交通法规在线模拟考试(AI问答、WebSocket即时通讯、Echarts图形化分析、随机测评)
  • 厦门建网站费用一览表网站设计流行趋势
  • Docker Compose 搭建 LNMP 环境并部署 WordPress 论坛
  • 无锡企业网站制作哪家好前端的网站重构怎么做
  • TensorFlow2 Python深度学习 - 深度学习概述
  • Davor的北极探险资金筹集:数学建模与算法优化(洛谷P4956)
  • Web Components 的开发过程举例
  • 【Algorithm】Day-1
  • 提示工程深度解析:驾驭大语言模型的艺术与科学
  • 网站开发证书是什么中国建设学会查询网站
  • java代码随想录day50|图论理论基础
  • 【模型量化迁移】详解:让AI大模型在端侧“轻装上阵”的核心技术
  • 【Proteus仿真】虚拟终端出现乱码问题解决
  • 深入理解HarmonyOS ArkTS语法:从基础到高级应用开发
  • Photoshop - Photoshop 工具栏(5)多边套索工具
  • 做彩票网站空间去哪买网站主播
  • JavaWeb--Ajax
  • 网站建设与维护报告总结许昌网站建设汉狮套餐
  • [初学C语言]关于scanf和printf函数
  • Oracle OCP认证考试题目详解082系列第2题
  • c++中<iostream> 常用接口汇总
  • Photoshop - Photoshop 工具栏(6)对象选择工具
  • 爱发电nginx转发企业微信webhook
  • 四川红叶建设有限公司网站长沙专业做网站
  • 光通信|模分复用技术-综述
  • Powercat内网端口转发实战:穿透边界服务器获取Shell
  • 千万级用户电商平台,Flink实时推荐系统如何实现毫秒级延迟?
  • 安装好vscode后,缺少vscode打开文件或文件夹选项
  • 装修网站开发思路用ps怎么做网站背景
  • 郑州网站zhi zuo网站开发+接活