Pytorch to(device)用法


Posted in Python onJanuary 08, 2020

如下所示:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)

这两行代码放在读取数据之前。

mytensor = my_tensor.to(device)

这行代码的意思是将所有最开始读取数据时的tensor变量copy一份到device所指定的GPU上去,之后的运算都在GPU上进行。

这句话需要写的次数等于需要保存GPU上的tensor变量的个数;一般情况下这些tensor变量都是最开始读数据时的tensor变量,后面衍生的变量自然也都在GPU上

如果是多个GPU

在代码中的使用方法为:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

model = Model()

if torch.cuda.device_count() > 1:

 model = nn.DataParallel(model,device_ids=[0,1,2])

 

model.to(device)

Tensor总结

(1)Tensor 和 Numpy都是矩阵,区别是前者可以在GPU上运行,后者只能在CPU上;

(2)Tensor和Numpy互相转化很方便,类型也比较兼容

(3)Tensor可以直接通过print显示数据类型,而Numpy不可以

把Tensor放到GPU上运行

if torch.cuda.is_available():
 h = g.cuda()
 print(h)
torch.nn.functional
Convolution函数
torch.nn.functional.vonv1d(input,weight,bias=None,stride=1,padding=0,dilation=1,groups=1)
 
 
 
torch.nn.functional.conv2d(input,weight,bias=None,stride=1,padding=0,dilation=1,group=1)
 
parameter:
 input --输入张量(minibatch * in_channels * iH * iW)-weights-? 过滤器张量 (out_channels, in_channels/groups, kH, kW) - bias ? 可选偏置张量 (out_channels) - stride ? 卷积核的步长,可以是单个数字或一个元组 (sh x sw)。默认为1 - padding ? 输入上隐含零填充。可以是单个数字或元组。 默认值:0 - groups ? 将输入分成组,in_channels应该被组数除尽
 
 
>>> # With square kernels and equal stride
>>> filters = autograd.Variable(torch.randn(8,4,3,3))
>>> inputs = autograd.Variable(torch.randn(1,4,5,5))
>>> F.conv2d(inputs, filters, padding=1)

Pytorch中使用指定的GPU

(1)直接终端中设定

CUDA_VISIBLE_DEVICES=1

(2)python代码中设定:

import os

os.environ['CUDA_VISIBLE_DEVICE']='1'

(3)使用函数set_device

import torch

torch.cuda.set_device(id)

Pytoch中的in-place

in-place operation 在 pytorch中是指改变一个tensor的值的时候,不经过复制操作,而是在运来的内存上改变它的值。可以把它称为原地操作符。

在pytorch中经常加后缀 “_” 来代表原地in-place operation, 比如 .add_() 或者.scatter()

python 中里面的 += *= 也是in-place operation。

下面是正常的加操作,执行结束加操作之后x的值没有发生变化:

import torch
x=torch.rand(2) #tensor([0.8284, 0.5539])
print(x)
y=torch.rand(2)
print(x+y)  #tensor([1.0250, 0.7891])
print(x)  #tensor([0.8284, 0.5539])

下面是原地操作,执行之后改变了原来变量的值:

import torch
x=torch.rand(2) #tensor([0.8284, 0.5539])
print(x)
y=torch.rand(2)
x.add_(y)
print(x)  #tensor([1.1610, 1.3789])

以上这篇Pytorch to(device)用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python用ConfigObj读写配置文件的实现代码
Mar 04 Python
python命令行参数sys.argv使用示例
Jan 28 Python
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
视觉直观感受若干常用排序算法
Apr 13 Python
Python中函数eval和ast.literal_eval的区别详解
Aug 10 Python
详解python中的线程
Feb 10 Python
python3实现磁盘空间监控
Jun 21 Python
python 执行终端/控制台命令的例子
Jul 12 Python
python 同时读取多个文件的例子
Jul 16 Python
python requests指定出口ip的例子
Jul 25 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
简单了解python数组的基本操作
Nov 26 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 #Python
Python语言异常处理测试过程解析
Jan 08 #Python
Pytorch在NLP中的简单应用详解
Jan 08 #Python
解析PyCharm Python运行权限问题
Jan 08 #Python
python读取ini配置的类封装代码实例
Jan 08 #Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 #Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 #Python
You might like
phpwind中的数据库操作类
2007/01/02 PHP
php cli换行示例
2014/04/22 PHP
php内存缓存实现方法
2015/01/24 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
前端性能优化建议
2020/09/17 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
浅谈django中的认证与登录
2016/10/31 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
实习医生自我评价
2013/09/22 职场文书
应聘教师推荐信
2013/10/31 职场文书
大学生职业生涯规划范文
2013/12/31 职场文书
大学生创业策划书
2014/02/02 职场文书
社区党支部承诺书
2015/04/29 职场文书
儿子满月酒致辞
2015/07/29 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL