pytorch 使用单个GPU与多个GPU进行训练与测试的方法


Posted in Python onAugust 19, 2019

如下所示:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")#第一行代码
model.to(device)#第二行代码

首先是上面两行代码放在读取数据之前。

mytensor = my_tensor.to(device)#第三行代码

然后是第三行代码。这句代码的意思是将所有最开始读取数据时的tersor变量copy一份到device所指定的GPU上去,之后的运算都在GPU上进行。需要注意的是这句话并不像前面的两行代码一样只需要写一遍,第三行代码需要写的次数就等于需要保存到GPU上的tensor变量个数;一般情况下这些tensor变量都是最开始读取数据时的tensor变量,后面所衍生的变量自然也都在GPU之上。

以上是使用单个GPU的情况。当你拥有多个GPU时,要想使用多个GPU进行训练和测试,需要在第一二行代码之间插上下面这样一个判断语句,其余的写法也都是一样的。

if torch.cuda.device_count() > 1:
 model = nn.DataParallel(model)

使用多个GPU的原理就是通过上面这句代码将model在每个GPU上分别保存一份,然后对model的输入tensor进行自动的分割,每个GPU计算tensor的一部分,这样就能实现计算量的平均分配。在每个model计算完成之后,DataParallel将这些结果进行收集和融合,之后再将结果返回。

以上这篇pytorch 使用单个GPU与多个GPU进行训练与测试的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的闭包详细介绍和实例
Nov 21 Python
Python实现以时间换空间的缓存替换算法
Feb 19 Python
Tornado 多进程实现分析详解
Jan 12 Python
Python中装饰器学习总结
Feb 10 Python
Tensorflow之Saver的用法详解
Apr 23 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
Python稀疏矩阵及参数保存代码实现
Apr 18 Python
keras之权重初始化方式
May 21 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 #Python
pytorch使用指定GPU训练的实例
Aug 19 #Python
关于pytorch多GPU训练实例与性能对比分析
Aug 19 #Python
pytorch 更改预训练模型网络结构的方法
Aug 19 #Python
pytorch打印网络结构的实例
Aug 19 #Python
pytorch索引查找 index_select的例子
Aug 18 #Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 #Python
You might like
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
php-app开发接口加密详解
2018/04/18 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
vue-cli之router基本使用方法详解
2017/10/17 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
Django自定义分页与bootstrap分页结合
2021/02/22 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python用户管理系统
2018/03/13 Python
Python callable()函数用法实例分析
2018/03/17 Python
python numpy中cumsum的用法详解
2019/10/17 Python
Python requests获取网页常用方法解析
2020/02/20 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
Python如何将字符串转换为日期
2020/07/31 Python
python绘图模块之利用turtle画图
2021/02/12 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
实习生自我鉴定
2013/12/12 职场文书
善意的谎言事例
2014/02/15 职场文书
企业文化演讲稿
2014/05/20 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
一文搞懂MySQL索引页结构
2022/02/28 MySQL
vue router 动态路由清除方式
2022/05/25 Vue.js