深度学习入门:神经网络原理与 PyTorch 实战

深度学习入门:神经网络原理与 PyTorch 实战

1. 神经网络基础

复制代码
神经网络结构:
├── 输入层:接收原始特征
├── 隐藏层:提取特征(可多层)
├── 输出层:产生预测结果
└── 激活函数:引入非线性

常见激活函数:
├── Sigmoid: σ(x) = 1/(1+e^(-x)),输出 (0,1)
├── Tanh: tanh(x),输出 (-1,1)
├── ReLU: max(0,x),最常用
├── LeakyReLU: max(0.01x, x)
└── Softmax: 多分类输出概率

2. PyTorch 基础

python 复制代码
import torch
import torch.nn as nn
import torch.optim as optim

# 创建张量
x = torch.randn(3, 4)           # 随机张量
y = torch.zeros(3, 4)           # 零张量
z = torch.ones(3, 4)            # 全 1 张量

# GPU 加速
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
x = x.to(device)

3. 构建神经网络

python 复制代码
import torch.nn as nn

class SimpleNN(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super().__init__()
        self.layers = nn.Sequential(
            nn.Linear(input_size, hidden_size),
            nn.ReLU(),
            nn.Dropout(0.2),
            nn.Linear(hidden_size, hidden_size),
            nn.ReLU(),
            nn.Dropout(0.2),
            nn.Linear(hidden_size, output_size)
        )
    
    def forward(self, x):
        return self.layers(x)

# 创建模型
model = SimpleNN(784, 256, 10).to(device)
print(model)

4. 训练循环

python 复制代码
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset

# 数据准备
dataset = TensorDataset(X_train_tensor, y_train_tensor)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)

# 损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

# 训练
for epoch in range(100):
    model.train()
    total_loss = 0
    
    for batch_X, batch_y in dataloader:
        batch_X, batch_y = batch_X.to(device), batch_y.to(device)
        
        # 前向传播
        outputs = model(batch_X)
        loss = criterion(outputs, batch_y)
        
        # 反向传播
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        
        total_loss += loss.item()
    
    if (epoch + 1) % 10 == 0:
        print(f"Epoch {epoch+1}, Loss: {total_loss/len(dataloader):.4f}")

5. 模型评估

python 复制代码
# 评估模式
model.eval()
with torch.no_grad():
    outputs = model(X_test_tensor.to(device))
    predictions = outputs.argmax(dim=1).cpu()
    accuracy = (predictions == y_test_tensor).float().mean()
    print(f"准确率: {accuracy:.4f}")

6. CNN 图像分类

python 复制代码
class SimpleCNN(nn.Module):
    def __init__(self, num_classes=10):
        super().__init__()
        self.features = nn.Sequential(
            nn.Conv2d(3, 32, 3, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 64, 3, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2),
            nn.Conv2d(64, 128, 3, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2),
        )
        self.classifier = nn.Sequential(
            nn.Flatten(),
            nn.Linear(128 * 4 * 4, 256),
            nn.ReLU(),
            nn.Dropout(0.5),
            nn.Linear(256, num_classes)
        )
    
    def forward(self, x):
        x = self.features(x)
        x = self.classifier(x)
        return x

7. 模型保存与加载

python 复制代码
# 保存
torch.save(model.state_dict(), 'model.pth')

# 加载
model = SimpleNN(784, 256, 10)
model.load_state_dict(torch.load('model.pth'))
model.eval()

总结

概念 说明
前向传播 输入 → 输出
反向传播 计算梯度
优化器 SGD/Adam/AdamW
损失函数 CrossEntropy/MSE
正则化 Dropout/BatchNorm
相关推荐
LaughingZhu3 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
风合星语3 天前
2026 具身智能技术实战(一):VLA 到底怎么控制机器人?——用 LeRobot 跑通 SmolVLA 推理
pytorch·机器人·具身智能·vla·lerobot·smolvla
猎头南楼3 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
高洁013 天前
未来三年,AI 落地的五个确定性判断一
人工智能·深度学习·机器学习·transformer·知识图谱
Tancenter3 天前
sequeeze()和unsequeeze()
pytorch·tensorr
`流年づ3 天前
人工智能学习笔记 - 补充
人工智能·笔记·深度学习·学习
Thomas.Sir3 天前
第21课:PyTorch|GPU多卡训练与分布式训练基础【让多卡并行成为你的加速引擎】
人工智能·pytorch·分布式
成为深度学习高手3 天前
CrossLinear:即插即用的跨相关嵌入,让线性模型也能用好外生变量
人工智能·python·深度学习·数据挖掘
科技苑3 天前
如何打造一个高效的全栖内容制作生态系统?
深度学习
CODER03043 天前
ubuntu22.04部署完整deepseek局域网web服务全过程(RTX5090安装黑屏+web端多人并发)
pytorch·webui·ubuntu22.04·ollama·deepseek·rtx5090·自然语言模型