栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

D2 Pytorch主要模块&FashionMNIST时装分类实践

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

D2 Pytorch主要模块&FashionMNIST时装分类实践

目录
  • Pytorch主要模块
    • 1. 引入
    • 2. 基本配置
    • 3. 读取数据
      • 3.1 ImageFolder类
      • 3.2 自定义Dataset类
      • 3.3 DataLoader按批次读入数据
    • 4. 搭建模型
    • 5. 模型初始化
      • 5.1 初始化方法
      • 5.2 初始化函数的封装
    • 6. 损失函数
    • 7. 优化器
    • 8. 训练和评估
  • 实践_FashionMNIST时装分类

Pytorch主要模块 1. 引入

2. 基本配置
  • 导入常见包
  • 设置超参数:batch_size, lr, epochs…
  • GPU设置
# 方案一:使用os.environ,这种情况如果使用GPU不需要设置
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'​
# 方案二:使用“device”,后续对要使用GPU的变量用.to(device)即可
device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu")
3. 读取数据
  • Dataset: 定义好数据的格式和数据变换形式
  • DataLoader: 用iterative的方式不断读入批次数据
3.1 ImageFolder类
import torch
from torchvision import datasets
train_data = datasets.ImageFolder(train_path, transform=data_transform)
val_data = datasets.ImageFolder(val_path, transform=data_transform)
3.2 自定义Dataset类

自定义Dataset类来实现灵活的数据读取,需继承PyTorch自身的Dataset类。主要包含三个函数:

  • __init__: 向类中传入外部参数,同时定义样本集
  • __getitem__: 逐个读取样本集合中的元素,可进行一定的变换,并将返回训练/验证所需的数据
  • __len__: 返回数据集的样本数

自定义Dataset类链接地址_深入浅出Pytorch

3.3 DataLoader按批次读入数据
from torch.utils.data import DataLoader

train_loader = torch.utils.data.DataLoader(train_data, batch_size=batch_size, num_workers=4, shuffle=True, drop_last=True)
val_loader = torch.utils.data.DataLoader(val_data, batch_size=batch_size, num_workers=4, shuffle=False)
4. 搭建模型
  1. 继承 torch.nn 模块中的Module类
  2. 重载了 Module 类的 init 函数和 forward 函数(自动生成backward函数)
  3. 实例化自定义类得到模型变量net
  4. net(X) 通过 Module 类的 call 函数调⽤自定义类的forward 函数来完成前向计算

神经网络中常见的层:

  • 不含模型参数的层
  • 含模型参数的层
  • 二维卷积层
  • 池化层

搭建模型示例_深入浅出Pytorch

5. 模型初始化

在深度学习模型的训练中,权重的初始值极为重要。一个好的权重值,会使模型收敛速度提高,使模型准确率更精确。为了利于训练和减少收敛时间,我们需要对模型进行合理的初始化。

5.1 初始化方法

通过访问torch.nn.init的官方文档链接 ,发现torch.nn.init提供的初始化方法

5.2 初始化函数的封装
def initialize_weights(self):
	for m in self.modules():
		# 判断是否属于Conv2d
		if isinstance(m, nn.Conv2d):
			torch.nn.init.xavier_normal_(m.weight.data)
			# 判断是否有偏置
			if m.bias is not None:
				torch.nn.init.constant_(m.bias.data,0.3)
		elif isinstance(m, nn.Linear):
			torch.nn.init.normal_(m.weight.data, 0.1)
			if m.bias is not None:
				torch.nn.init.zeros_(m.bias.data)
		elif isinstance(m, nn.BatchNorm2d):
			m.weight.data.fill_(1) 		 
			m.bias.data.zeros_()	

模型初始化_深入浅出Pytorch

6. 损失函数

相当于模型的负反馈。常见的损失函数介绍

7. 优化器

Pytorch优化器库torch.optim提供的十种优化器

8. 训练和评估


训练评估代码_深入浅出Pytorch

实践_FashionMNIST时装分类
  1. 激活远程服务器虚拟环境,配置环境,打开jupyter notebook并映射到本地,打开本地浏览器
  2. 手动下载FashionMNIST数据集,并在同级目录新建ipynb文件
  3. 导入必要的包,设置训练环境和超参数
  4. 分析数据,自定义dataset类读取并处理数据, DataLoader加载数据
  5. 搭建模型,类继承nn.Module, 定义模型变量,并重写forward函数
  6. 选择设置 Loss_fn 和 Optimizer
  7. 训练并验证模型
  8. 保存模型参数

FashionMNIST时装分类.ipynb


@夏日回音

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015277.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号