深度学习入门:神经网络原理与 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
相关推荐
kaixin_啊啊11 小时前
【用于更准确 G×E 基因组预测的大规模作物数据集与基于深度学习的多模态融合框架】论文学习
人工智能·深度学习·学习
deepseek2312 小时前
AI 模型隐藏任意能力拆解:把加密神经网络塞进宿主权重,能力评估为什么在密码学上抓不到
人工智能·深度学习·神经网络·密码学·模型安全
Smoothcloud润云12 小时前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu
梦帮科技12 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法
lll235269177913 小时前
法律咨询过程中的重要信息如何保存?
深度学习·智能手机
小王20413 小时前
Day 41:模型注意力机制 — SE / CBAM / ECA
python·深度学习·机器学习
朝朝辞暮i13 小时前
第 22 课:Conditional 1D U-Net——Diffusion Policy 怎样理解一整段未来动作?
人工智能·pytorch·深度学习·transformer·vla
探客木木夕14 小时前
结构超图重构神经网络模型:脉冲权重节点与四阶段闭环框架
人工智能·深度学习·神经网络
地理探险家14 小时前
从零实现图片自动分类:数据准备、模型训练与单图预测
人工智能·深度学习·机器学习·分类·数据挖掘·数据集
ZZHow102415 小时前
Ascend C算子开发(高级)笔记
c++·人工智能·笔记·深度学习·华为云