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