深度学习实战1
文章目录
前言
题主发现目前网络上关于深度学习入门的一些实战项目给的十分散乱,基本是是从github上直接copy过来,代码部分也没有详细的说明,特别不适合新手学习,因此想详细的列举几个常用的入门深度学习入门实战,方便大家对深度学习的理解和掌握。第一个实战是依据FashionMNIST数据集,利用经典的CNN进行分类。这是题主发布的第一个视频,过程可能包含一些问题,希望友友们多多提出宝贵意见。
一、Fashion-MNIST数据集
Fashion-MNIST是Zalando的研究论文中提出的一个数据集,由包含60000个实例的训练集和包含10000个实例的测试集组成。每个实例包含一张28x28的灰度服饰图像和对应的类别标记(共有10类服饰,分别是:t-shirt(T恤),trouser(牛仔裤),pullover(套衫),dress(裙子),coat(外套),sandal(凉鞋),shirt(衬衫),sneaker(运动鞋),bag(包),ankle boot(短靴))。
二、获取数据集
torchvision.datasets库中有封装好的数据集FashionMNIST,可直接import获取内置数据集
代码如下(示例):
import torchvision
from torchvision import transforms
# 将内置数据集的图片大小转为1*28*28后转化为tensor
# 这里Compose是将图像预处理的多个步骤整合在一起
train_transform = transforms.Compose([
transforms.Resize(28),
transforms.ToTensor()
])
# 读取FashionMNIST图片库,参数root是下载到本地的文件目录,train是数据是否为训练集,download默认True为下载,transform对图像预处理
train_data = torchvision.datasets.FashionMNIST(
root='/data/FashionMNIST',
train=True,
download=True,
transform=train_transform)
test_data=torchvision.datasets.FashionMNIST(
root='/data/FashionMNIST',
train=False,
download=True,
transform=train_transform)
三、加载(迭代)数据集
在这里,使用了Dataload包对之前的数据集进行迭代,num_works是针对批量获取速度的,在小数据集中一般不需要考虑。训练集在迭代时需要打乱,测试集不需要打乱,batch_size是对数据做批量处理。
代码如下(示例):
from torch.utils.data import DataLoader
batch_size = 256 # 批量大小,指迭代一批的大小
num_workers = 0 # windows设置为0
train_iter = DataLoader(train_data, batch_size=batch_size, shuffle=True, num_workers=num_workers)
test_iter = DataLoader(test_data, batch_size=batch_size, shuffle=False, num_workers=num_workers)
四、图像可视化
代码如下(示例):
import matplotlib as plt
# 这里figsize指整张图片的尺寸大小
def show_images(imgs, num_rows, num_cols, targets, scale=1.5):
figsize = (num_cols * scale, num_rows * scale)
_, axes = plt.subplots(num_rows, num_cols, figsize=figsize)
axes = axes.flatten()
for ax, img, target in zip(axes, imgs,