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实现定制交互式命令行的方法
Jul 03 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
python实现统计文本中单词出现的频率详解
May 20 Python
python 杀死自身进程的实现方法
Jul 01 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
python自定义时钟类、定时任务类
Feb 22 Python
python实现单链表的方法示例
Sep 03 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
Python读取pdf表格写入excel的方法
Jan 22 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
php checkbox 取值详细说明
2010/08/19 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
python中range()与xrange()用法分析
2016/09/21 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
Win8下python3.5.1安装教程
2020/07/29 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
高中毕业生自我鉴定范文
2013/09/26 职场文书
妇科医生自荐信
2013/11/05 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
销售辞职信范文
2015/03/02 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
初中体育课教学反思
2016/02/16 职场文书
opencv读取视频并保存图像的方法
2021/06/04 Python
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL