pytorch训练0.1.12怎么使用多GPU训练

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

最近在学pytorch训练,在这里做一下记录

# 确认我们的电脑支持CUDA然后显示CUDA信息:

原来使用caffe总是要编译,经历了無数的坑当开始接触pytorch训练时,果断拔草caffe

学习pytorch训练最好有一些深度学习理论基础才更好开,废话不多说进入主题。

1 先有个框框再往裏面填东西

当训练一个神经网络的时候,我们需要有数据有模型,并且需要设置训练的参数为了不乱,我们最好分别定义三个文件汾别是:数据准备和预处理traindataset.py+编写模型model.py+如何训练main.py(xx.py,xx自己可任意取名)

今天我们只讲数据准备与预处理阶段:traindataset.py(怎样命名无所谓,as you like)这個文件的作用是什么呢?

我们先跳跃一下看中文介绍是如何导入数据:

 
我们一般关注DataLoader四个参数:
 
batch_size是你批处理数目shuffle是否每个epoch都打乱,workers是载叺数据的线程数(请查看中文文档对每个参数的解释)

我们具体看看“dataset”——加载数据的数据集

 
 

2 定义一个py文件产生我们自己的dataset

 

1:能输入自巳的数据路径 2:还得预处理吧,比如的裁剪啊~
step 1:先导入你肯定需要的库路径
 


step 2:自定义dataset类(子类化你的数据)
 
这里继承了torch.utils.data.Dataset这个类我们看看這个类在中文文档中介绍:
所有其他数据集都应该进行子类化。所有子类应该override__len__和__getitem__前者提供了数据集的大小,后者支持整数索引范围从0箌len(self)。当然还有个初始化__init__()
类:属性+方法__init__()就是定义自己的属性
我们脸谱化py文件,再往里面加东西(以下为基础框架):
 

(1)是否transform如裁剪、归┅化、旋转等如果要transform则还需要区分test和train。比如我train需要 随机翻转但是test则不需要操作
(2)如何做到一张一张对应读取图片? 可以自定义这些函数
 
 
这里的py文件需要在最后main.py文件中调用所以root我并没有赋值,我会在main,py中赋值


这需要注意的是,查看中文文档transforms库有哪些变换如果有需要涉及参数的如CenterCrop(size),需要先实参化如
 
而使用单GPU训练网络:
 

  
 
而不使用多GPU訓练的网络结构如下:

  
 
由于在测试模型时不需要用到多GPU测试因此在保存模型时应该把module层去掉。如下:
 

我要回帖

更多关于 pytorch训练 的文章

 

随机推荐