目录
此博客为datawhle开源学习平台2025年2月组队学习打卡笔记链接,开源学习手册链接 ,视频教程链接
pytorch安装可看前一篇博客:深入浅出PyTorch(一)PyTorch的简介与安装
一项机器学习任务时常常有以下的几个重要步骤:
- 数据的预处理
- 选择模型,并设定损失函数和优化方法,以及对应的超参数
- 用模型去拟合训练集数据,并在验证集/测试集上计算模型表现
由于深度神经网络层数往往较多,同时会有一些用于实现特定功能的层(如卷积层、池化层、批正则化层、LSTM层等),因此深度神经网络往往需要“逐层”搭建,或者预先定义好可以实现特定功能的模块,再把这些模块组装起来。
基础实战及部分模块解释
目标:是对10个类别的“时装”图像进行分类
使用FashionMNIST数据集:链接
FashionMNIST数据集中包含已经预先划分好的训练集和测试集,其中训练集共60,000张图像,测试集共10,000张图像。每张图像均为单通道黑白图像,大小为28*28pixel,分属10个类别
1.导入包
对于一个PyTorch项目,我们需要导入一些Python常用的包来帮助我们快速实现功能。常见的包有os、numpy等,此外还需要调用PyTorch自身一些模块便于灵活使用,比如torch、torch.nn、torch.utils.data.Dataset、torch.utils.data.DataLoader、torch.optimizer等等。
使用import package
来导入包
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
2.配置训练环境和超参数
有如下几个超参数可以统一设置
- batch size批次大小
- 初始学习率(初始)
- 训练次数(max_epochs)
- GPU配置
# 配置GPU,这里有两种方式
## 方案一:使用os.environ
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
# 方案二:使用“device”,后续对要使用GPU的变量用.to(device)即可
device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu")
## 配置其他超参数,如batch_size, num_workers, learning rate, 以及总的epochs
batch_size = 256
num_workers = 0 # 对于Windows用户,这里应设置为0,否则会出现多线程错误
lr = 1e-4
epochs = 20
由于我的设备没有nividaGPU,自然默认使用方案二else中的“cpu”训练
解释:
batch_size:样本是按“批”读入的,batch_size就是每次读入的样本数
num_workers:有多少个进程用于读取数据,Windows下该参数设置为0,Linux下常见的为4或者8,根据自己的电脑配置来设置
3.数据读入和加载
PyTorch数据读入是通过Dataset+DataLoader的方式完成的,Dataset定义好数据的格式和数据变换形式,DataLoader用iterative的方式不断读入批次数据。
对数据进行必要的变换
将数据转化为tensor类,可以借助torchvision包来完成,这是PyTorch官方用于图像处理的工具库
# 首先设置数据变换
from torchvision import transforms
image_size = 28
data_transform = transforms.Compose([
transforms.ToPILImage(), # 这一步取决于后续的数据读取方式,如果使用内置数据集读取方式则不需要
transforms.Resize(image_size),
transforms.ToTensor()#转换为tensor类
])
数据读取
数据读取有两种方式:
- 下载并使用PyTorch提供的内置数据集
适用于常见的数据集,如MNIST,CIFAR10等,PyTorch官方提供了数据下载。这种方式往往适用于快速测试方法(比如测试下某个idea在MNIST数据集上是否有效)
## 读取方式一:使用torchvision自带数