深度学习入门:神经网络原理与 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
相关推荐
就是一顿骚操作26 分钟前
VGG:用小卷积块把 CNN 做深的经典解读
人工智能·深度学习·神经网络·cnn·论文解读
高洁012 小时前
工信部教考中心证书
人工智能·深度学习·算法·机器学习·知识图谱
DogDaoDao3 小时前
NNVC-17.1 深度解析:神经网络视频编码的最新进展与性能全景
神经网络·音视频·视频编解码·h266·vvc·vtm·nnvc
hhzz4 小时前
《深度学习框架PyTorch入门与实践》系列:09-分布式与并行训练之DataParallel、DDP与Horovod
pytorch·分布式·深度学习
心运软件4 小时前
基于深度学习的宝石图像分类系统
人工智能·python·深度学习·机器学习·分类·数据挖掘
雨晨源码(同名B站)4 小时前
【2027届人工智能专业选题】基于yolov8的农业病虫害图像识别与分类系统 |深度学习 计算机视觉
人工智能·深度学习·yolo·计算机视觉·分类
OpenApi.cc5 小时前
MoCode — AI Agent Server (Docker) + macOS Desktop Client(开源项目)
数据结构·人工智能·深度学习·神经网络
一个王同学5 小时前
从零到一 | CV转多模态大模型 | week22 | 实战项目-DocuMind-VL:基于 OCR 与 Qwen-VL 的文档多模态问答系统(二)
人工智能·深度学习·机器学习·计算机视觉·ocr
美狐美颜SDK开放平台5 小时前
第三方美颜SDK接入教程:直播APP实现实时美颜、滤镜与美型效果的方法
人工智能·深度学习·音视频·sdk·美颜sdk·视频美颜sdk·直播app开发