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实现简单拆分PDF文件的方法
Jul 30 Python
用Python shell简化开发
Aug 08 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
Python脚本完成post接口测试的实例
Dec 17 Python
Centos部署django服务nginx+uwsgi的方法
Jan 02 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
Python爬取365好书中小说代码实例
Feb 28 Python
python 利用toapi库自动生成api
Oct 19 Python
手把手教你使用TensorFlow2实现RNN
Jul 15 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 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
文件上传程序的全部源码
2006/10/09 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
2011/01/07 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
php字符串分割函数用法实例
2015/03/17 PHP
PHP使用递归生成文章树
2015/04/21 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
管理学专业个人求职信范文
2013/12/13 职场文书
租房协议书样本
2014/08/20 职场文书
建议书的格式及范文
2015/09/14 职场文书
高二语文教学反思
2016/02/16 职场文书
《落花生》教学反思
2016/02/16 职场文书