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 相关文章推荐
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
Random 在 Python 中的使用方法
Aug 09 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
python 日志模块logging的使用场景及示例
Jan 04 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
海贼王:最美的悬赏令!
2020/03/02 日漫
pdo中使用参数化查询sql
2011/08/11 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
vue如何判断dom的class
2018/04/26 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
Python 第一步 hello world
2009/09/25 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
python字符串的常用操作方法小结
2016/05/21 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
浅谈python常用程序算法
2019/03/22 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
Python如何安装第三方模块
2020/05/28 Python
python字典的值可以修改吗
2020/06/29 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
会议邀请函范文
2014/01/09 职场文书
周年庆典邀请函范文
2014/01/23 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
毕业生个人总结
2015/02/28 职场文书
教师工作能力自我评价
2015/03/04 职场文书