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 transforms

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize(mean, std)
])

b. 模型定义

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

示例:

import torch.nn as nn

class 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 plt

losses = []

# 在训练循环中每轮加入损失
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)检测及使用技巧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值