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

相关推荐
Metaphor6925 小时前
Python 自动化办公:如何轻松在 PDF 中导入与导出表单数据
python·pdf·自动化
外收内放13 小时前
面向对象高级(实战案例)
开发语言·python·学习
专业程序开发源14 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
FPGA小迷弟14 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
卷无止境14 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python
fanruitian14 小时前
python else用法
开发语言·python
Thinker QAQ15 小时前
并发编程(十一):Shared Memory 与 Message Passing——关系与组合使用
java·python·go·并发编程·shared memory·message passing
用户83562907805115 小时前
如何使用 Python 对 Excel 数据进行分组和分级显示
后端·python
vx_Biye_Design15 小时前
django房屋租赁推荐系统78455-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·express
学Linux的语莫17 小时前
python中类的常见写法
开发语言·python·状态模式