深度学习第P2周:彩色图片识别
●难度:小白入门⭐
●语言:Python3、Pytorch
🍺 要求:
1学习如何编写一个完整的深度学习程序
2手动推导卷积层与池化层的计算过程
🔔本次的重点在于学会构建CNN网络
🏡 我的环境:
●语言环境:Python3.8
●编译器:jupyter notebook
●深度学习环境:Pytorch
一、 前期准备
1. 设置GPU
如果设备上支持GPU就使用GPU,否则使用CPU
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import torchvision
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
device
2. 导入数据
使用dataset下载CIFAR10数据集,并划分好训练集与测试集
使用dataloader加载数据,并设置好基本的batch_size
CIFAR-10
Size: 32×32 RGB图像 ,数据集本身是 BGR 通道
Num: 训练集 50000 和 测试集 10000,一共60000张图片
Classes: plane(飞机), car(汽车),bird(鸟),cat(猫),deer(鹿),dog(狗),frog(蛙类),horse(马),ship(船),truck(卡车)
train_ds = torchvision.datasets.CIFAR10('data',
train=True,
transform=torchvision.transforms.ToTensor(), # 将数据类型转化为Tensor
download=True)
test_ds = torchvision.datasets.CIFAR10('data',
train=False,
transform=torchvision.transforms.ToTensor(), # 将数据类型转化为Tensor
download=True)
batch_size : 代表每次从所有数据中取出一小筐子数据进行训练,类似挑十框石头,每次挑一筐,此时的batch_size=1。这个参数是由于深度学习中尝使用SGD(随机梯度下降)产生。batch_size的大小取值和GPU内存会有关系,数值越大一次性载入数据越多,占用的GPU内存越多。适当增加batch_size能够增加训练速度和训练精度(因为梯度下降时震动较小),过小会导致模型收敛困难。
# batch_size : 代表每次从所有数据中取出一小筐子数据进行训练,类似挑十框石头,每次挑一筐,此时的batch_size=1。这个参数是由于深度学习中尝使用SGD(随机梯度下降)产生。batch_size的大小取值和GPU内存会有关系,数值越大一次性载入数据越多,占用的GPU内存越多。适当增加batch_size能够增加训练速度和训练精度(因为梯度下降时震动较小),过小会导致模型收敛困难。
batch_size = 32
train_dl = torch.utils.data.DataLoader(train_ds,
batch_size=batch_size,
shuffle=True)
test_dl = torch.utils.data.DataLoader(