Iridescent:Day33

https://blog.csdn.net/weixin_45655710?type=blog
@浙大疏锦行

DAY 33 MLP 神经网络的训练

知识点回顾:

  1. PyTorch和桃的安装
    2.查看显卡信息的命令行命令(cmd中使用)
    3.桃的检查
    4.简单神经网络的流程
    a.数据预处理(归一化、转换成张量)
    b.模型的定义
    i.继承nn.Module类
    ii.定义每一个层
    iii.定义前向传播流程
    c.定义损失函数和优化器
    d.定义训练流程
    e.可视化loss过程

你今天主要学习了基于PyTorch框架实现多层感知机(MLP)来解决鸢尾花分类问题的完整流程,涵盖了环境配置、数据处理、模型构建和训练的核心环节。

核心内容梳理

1. 环境准备与CUDA检查
  • 环境配置 :创建了名为DL的conda环境(Python 3.8),安装了pytorch、scikit-learn等核心依赖;区分了CPU/GPU版本的PyTorch安装,GPU版本需依赖NVIDIA显卡的CUDA/CUDNN组件。
  • CUDA验证 :通过nvidia-smi命令查看显卡支持的最高CUDA版本和显存,通过PyTorch代码检查CUDA是否可用、设备数量/名称、实际安装的CUDA版本。
2. 数据预处理(鸢尾花数据集)
  • 加载数据集并划分训练集/测试集(测试集占比20%);
  • 对特征数据做MinMaxScaler归一化(神经网络对输入尺度敏感,需统一范围);
  • 将NumPy数组转换为PyTorch张量(特征为FloatTensor,标签为LongTensor,适配分类任务)。
3. MLP模型定义
  • 继承nn.Module构建自定义MLP类,包含:
    • 输入层(nn.Linear(4, 10)):4个特征→10个隐藏神经元;
    • 激活函数(ReLU):引入非线性,解决线性模型表达能力不足的问题;
    • 输出层(nn.Linear(10, 3)):10个隐藏神经元→3个分类结果(无激活,因交叉熵损失内置Softmax);
  • 实现forward方法定义前向传播逻辑(两种写法:显式调用ReLU层/直接用torch.relu)。
4. 模型训练(CPU版本)
  • 损失函数:选用nn.CrossEntropyLoss(适配多分类任务);
  • 优化器:可选SGD(固定学习率0.01)或Adam(自适应学习率0.001);
  • 训练循环核心步骤:
    1. 前向传播:模型预测训练集输出;
    2. 计算损失:预测值与真实标签的误差;
    3. 反向传播:optimizer.zero_grad()清零梯度(避免累积)→loss.backward()计算梯度→optimizer.step()更新参数;
    4. 记录并打印每100轮的损失值,最后可视化损失曲线。

总结

  1. 核心流程:深度学习项目的基础范式是「环境配置→数据预处理→模型定义→损失/优化器设置→训练迭代→结果可视化」;
  2. 关键细节 :神经网络需归一化输入、分类任务标签用LongTensor、输出层无需激活(交叉熵损失内置Softmax)、训练时必须清零梯度;
  3. 硬件适配:GPU(NVIDIA)通过CUDA加速并行计算,无NVIDIA显卡可先用CPU版本训练,后续迁移到云服务器GPU。

这些内容覆盖了PyTorch实现简单神经网络的全流程,是后续复杂深度学习项目的基础,重点要理解梯度下降、激活函数、损失函数在训练中的作用。

图1:PyTorch环境配置与CUDA检查流程图。展示从创建conda环境到验证CUDA可用性的完整步骤,包含关键命令和代码片段。

图2:鸢尾花数据集预处理流程图。呈现从数据加载、划分、归一化到张量转换的全过程,标注数据维度变化。

图3:MLP模型架构图。可视化三层神经网络结构,标注各层输入输出维度和激活函数位置。

图4:模型训练循环流程图。展示前向传播、损失计算、反向传播和参数更新的迭代过程,包含关键代码片段。

相关推荐
aqi005 分钟前
15天学会AI应用开发(三)把历史对话作为提示词会怎样
人工智能·python·大模型·ai编程·ai应用
大数据魔法师5 分钟前
Streamlit(十八)- API 参考文档(十一)- 页面导航组件
python·web
weixin_4684668511 分钟前
数据高效处理实战:从痛点解决到价值落地
大数据·python·自动化·数据处理
hui函数30 分钟前
Python系列Bug修复|如何解决 pip install 报错 ModuleNotFoundError: No module named ‘pygame’ 问题
python·bug·pip
xcLeigh31 分钟前
Python入门:Python3 operator模块全面学习教程
开发语言·python·学习·教程·python3·operator
xcLeigh31 分钟前
Python小游戏实战:实现2048游戏小游戏附源码
python·游戏·教程·pygame·2048·python3
大叔带刺33 分钟前
使用python创建自己的专属星座签名APP:Name2Constell
开发语言·python·pygame
weixin_468466851 小时前
Markitdown 文档解析快速入门指南
开发语言·python·自动化·编程
我材不敲代码1 小时前
Python基础:注释的写法(单行、多行、文档注释)
服务器·python·microsoft