实战:FashionMNIST时装分类中自己一些收获
任务简介
- 这里的任务是对10个类别的“时装”图像进行分类,使用FashionMNIST数据集。
- FashionMNIST中数据的若干样例图,其中每个小图对应一个样本。
- FashionMNIST数据集中包含已经预先划分好的训练集和测试集,其中训练集共60,000张图像,测试集共10,000张图像。
- 每张图像均为单通道黑白图像,大小为28*28pixel,分属10个类别。
导入必要的包
import os
import numpy as np
import pandas as pd
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import Dataset, DataLoader
配置训练环境和超参
先要查看GPU是否可用
torch.cuda.is_available()
- 输出
True,就说明是好的
配置GPU,有两种方式
- 方案1:使用os.environ 这种之后用xxx.cuda()
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1' # 这里可以是多块 0,1,2,3
- 方案2:使用device,后续要使用GPU直接用xxx.to_device(device)
device = torch.device('cuda:1' if torch.cuda.is_available() else 'cpu')
- 这边可以查一下
单卡和多卡配置
数据的读入与加载
from torchvision import transforms
-
1.图像预处理
- Compose把多个步骤整合到一起:
data_transform = transforms.Compose([ transforms.ToPILImage(), transforms.Resize(img_size), transforms.ToTensor() ])- 解析:
# 示例代码 transform.ToTensor(), transform.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))ToTensor()能够把灰度范围从0-255变换到0-1之间- 后面的
transform.Normalize()则把0-1变换到(-1,1) - 解析:
Normalize:image = (image - mean) / std - 其中mean和std分别通过(0.5,0.5,0.5)和(0.5,0.5,0.5)进行指定
- 将ToTensor()转换的(0, 1)变成(0-0.5)/0.5 = -1 (1-0.5)/0.5=1
-
2.读取数据
- 先读入csv格式的数据:60000张训练集和10000张测试集,784个特征,1个标签
- 再构建自己的
Dataset:- 继承
Dataset,重写__init__、__len__、__getitem__
- 继承
def __init__(self, df, transform=None):
self

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



