🍨 本文为 【365天深度学习训练营】中的学习记录博客
🍖 原作者:【K同学啊 | 接辅导、项目定制】
一、环境配置
-
语言环境:Python3.8
-
编译器:Jupyter Lab
-
深度学习环境:
-
-
torch==1.12.1+cu113
-
torchvision==0.13.1+cu113
-
二、 前期准备
1. 设置GPU
设备上支持GPU就使用GPU,否则使用CPU
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import torchvision
# 设置硬件设备,如果有GPU则使用,没有则使用cpu
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
device
2. 导入数据
使用dataset下载MNIST数据集,并划分好训练集与测试集
使用dataloader加载数据,并设置好基本的batch_size
⭐ torchvision.datasets.MNIST详解⭐
torchvision.datasets是Pytorch自带的一个数据库,我们可以通过代码在线下载数据,这里使用的是torchvision.datasets中的MNIST数据集。
函数原型:
torchvision.datasets.MNIST(root, train=True, transform=None, target_transform=None, download=False)
参数说明:
- root (string) :数据地址
- train (string) :True-训练集,False-测试集
- download (bool,optional) : 如果为True,从互联网上下载数据集,并把数据集放在root目录下。
- transform (callable, optional ):这里的参数选择一个你想要的数据转化函数,直接完成数据转化
- target_transform (callable,optional) :接受目标并对其进行转换的函数/转换。
train_ds = torchvision.datasets.MNIST('data',
train=True,
transform=torchvision.transforms.ToTensor(),
# 将数据类型转化为Tensor
download=True)
test_ds = torchvision.datasets.MNIST('data',
train=False,
transform=torchvision.transforms.ToTensor(),
# 将数据类型转化为Tensor
download=True)
⭐ torch.utils.data.DataLoader详解⭐
torch.utils.data.DataLoader是Pytorch自带的一个数据加载器,结合了数据集和取样器,并且可以提供多个线程处理数据集。
函数原型:
torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=None, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None, multiprocessing_context=None, generator=None, *, prefetch_factor=2, persistent_workers=False, pin_memory_device='')
参数说明:
- dataset (string) :加载的数据集
- batch_size (int,optional) :每批加载的样本大小(默认值:1)
- shuffle (bool,optional) : 如果为`True`,每个epoch重新排列数据。
- sampler (Sampler or iterable, optional) : 定义从数据集中抽取样本的策略。 可以是任何实现了 __len__ 的 Iterable。 如果指定,则不得指定 shuffle 。
- batch_sampler (Sampler or iterable, optional) : 类似于sampler,但一次返回一批索引。与 batch_size、shuffle、sampler 和 drop_last 互斥。<