深度学习
深度神经网络,通过构建多层人工神经网络模拟人类大脑的信息处理和学习机制,实现对大量数据的处理和分析。
pytorch,用于构建和训练深度神经网络的工具。
📌 范式周期
📍 准备数据
准备数据,将数据转为适合神经网络模型训练的数据。
- 数据下载,pytorch提供加载和下载数据集的功能
- 数据格式转换,ToTensor()预处理,将PIL图像转为PytorchTensor图像,并调整精度
- 数据集划分,分为多个批次+枚举方式训练
from torchvision.datasets import MNIST
from torchvision.transforms import ToTensor
from pathlib import Path
# 定义保存或加载数据集的位置
# path = '~/.torch/datasets/mnist'
path = Path(".") / ".torch" / "datasets" / "mnist"
# 下载并定义数据集
train = MNIST(path, train=True, download=True, transform=ToTensor())
test = MNIST(path, train=False, download=True, transform=ToTensor())
# 数据集划分
from torch.utils.data import DataLoader
train_dl = DataLoader(train, batch_size=64, shuffle=True)
test_dl = DataLoader(test, batch_size=1024, shuffle=False)
print("总数据集数量为:", len(train)) # 60000
print("每批训练数据集数量为:", len(train_dl)) # 60000/64=938
from matplotlib import pyplot
# 枚举并绘图
i, (inputs, targets) = next(enumerate(train_dl))
for i in range(25):
# 在5x5的网格中绘制每个样本的灰度图像
# 灰度图像:每个像素用不同深浅的灰色表示,而不包含颜色信息。
pyplot.subplot(5, 5, i + 1)
# 绘制原始像素数据
pyplot.imshow(inputs[i][0], cmap='gray')
# 展示图片
pyplot.show()
📍 定义模型
- 卷积层:转换为0-1的数据矩阵,减少参数数量。
- 池化层:对卷积层输出的特征图进行下采样,减少数据维度。
- 全连接层:分类结果,通过加权求和得到每个类别的得分。
📍 训练模型
输入训练数据,计算损失调整参数并重复多个周期,直至模型学到训练数据的特征。
损失函数,衡量模型预测的准确性 优化器,用于调整模型的参数