📈 进阶篇概述
欢迎来到进阶篇!在这里,你将学习如何构建和训练真正的神经网络。
📚 本章内容
| 章节 | 内容 | 预计时间 |
|---|---|---|
| 神经网络 | 使用nn.Module构建神经网络 | 45分钟 |
| 模型训练 | 完整的训练流程 | 60分钟 |
| 保存加载 | 模型的保存与加载 | 20分钟 |
| GPU加速 | 使用GPU加速训练 | 20分钟 |
🎯 学习目标
完成本章后,你将能够:
- ✅ 使用
nn.Module构建神经网络 - ✅ 理解并实现完整的训练循环
- ✅ 选择合适的损失函数和优化器
- ✅ 保存和加载训练好的模型
- ✅ 使用GPU加速训练
🧠 什么是神经网络?
神经网络是一种模仿人脑结构的计算模型,由多层"神经元"组成:
输入层 隐藏层 输出层
○ ○
○ ───→ ○ ───→ ○ (预测结果)
○ ○
○ ○
每个连接都有一个权重(weight)
每个神经元有一个偏置(bias)和激活函数
神经网络的工作原理
1. 输入数据 x
2. 线性变换: z = Wx + b
3. 非线性激活: a = σ(z)
4. 重复2-3直到输出层
5. 得到预测结果
💡 直观理解
把神经网络想象成一个复杂的函数,它能学习输入和输出之间的关系:
- 输入可能是图片的像素值
- 输出可能是"猫"或"狗"的概率
- 中间的权重和偏置就是网络学习到的"知识"
🏗️ PyTorch构建神经网络的方式
PyTorch提供了灵活的方式来构建神经网络:
import torch
import torch.nn as nn
# 方式1:继承nn.Module(推荐)
class MyNetwork(nn.Module):
def __init__(self):
super().__init__()
self.layer1 = nn.Linear(10, 20)
self.layer2 = nn.Linear(20, 1)
def forward(self, x):
x = torch.relu(self.layer1(x))
x = self.layer2(x)
return x
# 方式2:使用nn.Sequential(简单情况)
model = nn.Sequential(
nn.Linear(10, 20),
nn.ReLU(),
nn.Linear(20, 1)
)
📊 训练流程概览
┌─────────────┐
│ 准备数据 │ DataLoader
└──────┬──────┘
↓
┌─────────────┐
│ 定义模型 │ nn.Module
└──────┬──────┘
↓
┌─────────────┐
│ 定义损失 │ nn.CrossEntropyLoss等
└──────┬──────┘
↓
┌─────────────┐
│ 定义优化器 │ torch.optim.Adam等
└──────┬──────┘
↓
┌─────────────────────────────────┐
│ 训练循环 (重复多个epoch) │
│ ┌─────────────────────────┐ │
│ │ for batch in dataloader │ │
│ │ 1. 前向传播 │ │
│ │ 2. 计算损失 │ │
│ │ 3. 反向传播 │ │
│ │ 4. 更新参数 │ │
│ └─────────────────────────┘ │
└─────────────────────────────────┘
准备好了吗?让我们从构建神经网络开始!
Copyright © 2024 编程指南 | 版权所有,保留一切权利
