动手学深度学习学习笔记

在学习深度学习的过程中,李沐的《动手学深度学习》一书为我提供了一个非常清晰和系统的学习框架。在这本书中,通过大量实践的案例来帮助读者深入理解深度学习的核心概念,使得学习过程更加生动。下面是我在阅读过程中总结的一些关键点和代码示例。

1. 深度学习基础

深度学习是机器学习的一个子领域,利用多层神经网络来进行数据建模和预测。与传统的机器学习方法不同,深度学习能够从原始数据中自动提取特征,减少了特征工程的复杂性。

1.1 神经网络的基本结构

一个基本的神经网络包含输入层、隐藏层和输出层。每一层由若干个神经元组成,神经元之间通过权重连接。

以下是一个简单的神经网络的实现示例,使用的是Python中的PyTorch库:

import torch
import torch.nn as nn
import torch.optim as optim

# 定义神经网络模型
class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(2, 4)  # 输入层到隐藏层
        self.fc2 = nn.Linear(4, 1)  # 隐藏层到输出层

    def forward(self, x):
        x = torch.relu(self.fc1(x))  # 使用ReLU激活函数
        x = torch.sigmoid(self.fc2(x))  # 使用Sigmoid激活函数
        return x

# 实例化模型
model = SimpleNN()
print(model)

2. 数据准备与处理

在深度学习中,数据的准备和处理是至关重要的。我们通常需要对数据进行归一化,以加速模型的收敛。常用的归一化方法为Min-Max归一化和Z-Score归一化。

2.1 数据加载

我们可以使用torchvision库来加载数据集,处理常见的图像数据。在这里我们以 CIFAR-10 数据集为例:

import torchvision.transforms as transforms
import torchvision.datasets as datasets
from torch.utils.data import DataLoader

# 数据预处理
transform = transforms.Compose([
    transforms.ToTensor(),  # 转化为Tensor
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),  # 数据归一化
])

# 加载CIFAR-10数据集
train_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)

3. 模型训练

训练模型的关键是前向传播和反向传播。在模型训练过程中,我们会不断更新模型的参数以最小化损失函数。

3.1 定义损失函数和优化器

损失函数用来衡量模型的输出与真实标签之间的差距,而优化器可以根据损失的梯度信息来更新模型的参数。

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

3.2 训练过程

下面是一个简化的训练过程示例:

num_epochs = 5
for epoch in range(num_epochs):
    for images, labels in train_loader:
        optimizer.zero_grad()  # 清空梯度
        outputs = model(images)  # 前向传播
        loss = criterion(outputs, labels)  # 计算损失
        loss.backward()  # 反向传播
        optimizer.step()  # 更新参数
    print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')

4. 总结

通过学习《动手学深度学习》,我更加深入地理解了深度学习模型的构建与训练。从数据的准备到模型的训练,再到结果的评估,这一过程为我后续的研究和工程实践打下了坚实的基础。未来我将继续探索更多复杂的网络结构和应用场景,提升自己的深度学习技能。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部