PyTorch quickstart_tutorial 旨在为初学者提供一个快速而简单的概述,以了解PyTorch的基础知识,如张量操作和神经网络建模。
主要包括以下主要部分:
- 张量(Tensors):介绍了张量的基本概念、操作和创建方法。
- 自动梯度和优化(autograd and optimization):解释了自动梯度的概念以及如何使用优化器训练神经网络。
- 神经网络模型(neural network models):展示了如何使用PyTorch建立和训练一个简单的全连接神经网络。
- 数据处理和加载(data handling and loading):介绍了如何准备数据以进行训练,并将其加载到PyTorch数据加载器中。
以下是代码及注释
# 导入必要的包
import torch
from torch import nn
from torch.utils.data import DataLoader
from torchvision import datasets
from torchvision.transforms import ToTensor
处理数据
PyTorch 提供了两个类用于处理数据的基本元素:
torch.utils.data.DataLoader
和 torch.utils.data.Dataset
。
Dataset
存储样本及其相应的标签,而 DataLoader
将可迭代对象包装在 Dataset
周围。
# 从开放数据集下载训练数据,其中FashionMNIST是一个数据集,包含了10种不同的服装类别,
# 每张图像都是28 x 28像素大小的灰度图像。
training_data = datasets.FashionMNIST(
root="data", # 数据集下载和存储的目录
train=True, # 下载训练数据集
download=True, # 如果数据集不存在,则下载
transform=ToTensor(), # 将数据转换为张量
)
# 从开放数据集下载测试数据。
test_data = datasets.FashionMNIST(
root="data", # 数据集下载和存储的目录
train=False, # 下载测试数据集
download=True, # 如果数据集不存在,则下载
transform=ToTensor(), # 将数据转换为张量
)
将 Dataset
作为参数传递给 DataLoader
。这将在我们的数据集周围包装一个可迭代的对象,并支持自动批处理、抽样、随机混洗和多进程数据加载。在这里,定义了一个批量大小为 64,即迭代器中的每个元素将返回 64 个特征和标签。
batch_size = 64 # 定义每个批次的图像数量
# 创建数据加载器。
train_dataloader = DataLoader(training_data, batch_size=batch_size) # 创建训练数据的数据加载器
test_dataloader = DataLoader(test_data, batch_size=batch_size) # 创建测试数据的数据加载器
# 从测试数据加载器中取出第一个批次的数据,并输出数据形状
for X, y in test_dataloader:
print(f"Shape of X [N, C, H, W]: {
X.shape}") # 图像张量的形状,N表示批次大小,C表示通道数,H表示图像高度,W表示图像宽度
print(f"Shape of y: {
y.shape} {
y.dtype}"