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

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)检测及使用技巧

http://www.xdnf.cn/news/8907.html

相关文章:

  • GO 语言中变量的声明
  • Python中字典(dict)知识详解应用
  • 非接触式互连:当串扰是您的朋友时
  • NumPy 数组属性
  • 英语科研词汇现象及语言演变探讨
  • Rephrase and Respond :让大语言模型为自己提出更优的问题
  • Disruptor—3.核心源码实现分析二
  • 第十八章:数据治理之数据质量:“数据质量”不仅仅和“数据质量”有关
  • 数据库故障排查指南技术文章
  • 用 Python 构建自动驾驶的实时通信系统:让车辆“交流”起来!
  • 【Python 元祖】 Tuple 核心知识点
  • no cmake_c_compiler could be found.
  • SQL每日一练(7)
  • 动态规划-53.最大子数组和-力扣(LeetCode)
  • java 动态代理
  • 计算机系统简介(一)
  • 使用keil5实现RA4M2按键控制LED的状态
  • java学习记录——MyBatisPlus
  • 结合GIS谈谈Java面向对象(OOP,Object-Oriented Programming)的核心思想
  • redis集群配置
  • 20250525-更新 Anaconda 和 `pip` 中的库包
  • 嵌入式项目之QT页面制作
  • 英伟达破局1000 Token/秒!Llama 4以光速重塑AI推理边界
  • 为什么hash函数能减少哈希冲突
  • C++函数入门:void与int详解
  • 前端融球效果原理讲解+具体实现+模糊度,对比度基础教学
  • AI大模型学习二十八、ACE-Step:生成式AI音乐大模型简介与安装(一)
  • Android 启动流程开发注意事项
  • 蚕豆剥豆机机械原理设计与优化
  • 从零实现智能封面生成器