Pytorch实战1: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值