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

Python Day33

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


MLP神经网络训练复习

1. PyTorch 与 CUDA 安装

  • PyTorch安装:推荐使用官方命令(根据你的CUDA版本)例如:
pip install torch torchvision torchaudio

或使用conda:

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
  • CUDA支持:确保你的GPU支持CUDA,安装匹配版本的显卡驱动和CUDA Toolkit。

2. 查看显卡信息(命令行)

  • Windows CMD:
nvidia-smi
  • 查看GPU详细信息(在PyTorch中也可以用代码查询)

3. CUDA的检查

在Python中:

import torch
print(torch.cuda.is_available())  # 查看CUDA是否可用
print(torch.cuda.device_count())  # 当前GPU数量
print(torch.cuda.get_device_name(0))  # GPU设备名

4. 简单神经网络流程

a. 数据预处理

  • 归一化:将数据缩放到某个范围(通常0-1或-1到1)
  • 转换为张量
import torchvision.transforms as transformstransform = transforms.Compose([transforms.ToTensor(),transforms.Normalize(mean, std)
])

b. 模型定义

  • 继承 nn.Module
  • 定义网络层
  • 实现 forward() 方法

示例:

import torch.nn as nnclass MLP(nn.Module):def __init__(self):super(MLP, self).__init__()self.fc1 = nn.Linear(input_dim, hidden_dim)self.relu = nn.ReLU()self.fc2 = nn.Linear(hidden_dim, output_dim)def forward(self, x):x = self.fc1(x)x = self.relu(x)x = self.fc2(x)return x

c. 损失函数和优化器

  • 损失函数:nn.CrossEntropyLoss(), nn.MSELoss()
  • 优化器:torch.optim.SGD, torch.optim.Adam

示例:

criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

d. 训练流程

  • 遍历数据
  • 清零梯度 optimizer.zero_grad()
  • 前向传播
  • 计算损失
  • 反向传播 loss.backward()
  • 更新参数 optimizer.step()

示例:

for epoch in range(num_epochs):for data, labels in dataloader:data = data.to(device)labels = labels.to(device)outputs = model(data)loss = criterion(outputs, labels)optimizer.zero_grad()loss.backward()optimizer.step()

e. 可视化Loss

用matplotlib绘制训练过程中loss变化:

import matplotlib.pyplot as pltlosses = []# 在训练循环中每轮加入损失
losses.append(loss.item())plt.plot(losses)
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.title('Training Loss over Epochs')
plt.show()

小结

  • 先配置好环境(PyTorch、CUDA)
  • 理解神经网络的训练流程:数据预处理 -> 模型定义 -> 损失函数/优化器 -> 训练循环 -> 可视化
  • 牢记模型定义中的继承nn.Module的重要性
  • 熟悉GPU利用(cuda)检测及使用技巧

相关文章:

  • java多态的学习笔记
  • 解决DeepSeek部署难题:提升效率与稳定性的关键策略
  • MYSQL中的分库分表
  • C++ STL 算法函数std::remove_if学习
  • Q1:Go协程、Channel通道 被close后,读会带来什么问题?
  • 题目 3325: 蓝桥杯2025年第十六届省赛真题-2025 图形
  • Q2:如果 Channel 没有关闭,读取会一直阻塞吗?
  • C++23 元编程工具新特性探索
  • 【机器人】复现 Embodied-Reasoner 具身推理 | 具身任务 深度推理模型 多模态场景 长远决策 多轮互动
  • 华为OD机试真题—— 小明减肥(2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • Disruptor—3.核心源码实现分析二
  • MongoDB分布式架构详解:复制与分片的高可用与扩展之道
  • Android 性能优化入门(三)—— ANR 问题分析
  • ArcGISpro中的空间统计分析(二)
  • npm幻影依赖问题
  • 【最新版】Arduino IDE的安装入门Demo
  • 【Linux】进程信号(一):信号的产生与信号的保存
  • LLaMA-Factory 微调模型与训练数据量对应关系
  • 根据LangChain4j官方文档,三分钟完成Springboot项目集成LangChain4j
  • Bolt.new:重塑 Web 开发格局的 AI 利器
  • 中山网站制作系统/怎么注册自己的网站域名
  • springmvc做网站/网站推广app软件
  • wordpress title标题/郑州关键词优化费用
  • 做购物网站数据库分析/免费b站推广网站详情
  • 做模具的都有什么网站/百度2022第三季度财报
  • 如何在网站上做免费广告/百度热搜榜在哪里看