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中用sleep()方法操作时间的教程
May 22 Python
利用Python脚本实现ping百度和google的方法
Jan 24 Python
Django开发中复选框用法示例
Mar 20 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
浅谈Python 递归算法指归
Aug 22 Python
opencv-python 提取sift特征并匹配的实例
Dec 09 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
Python验证码截取识别代码实例
May 16 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 Python
Python基础之常用库常用方法整理
Apr 30 Python
一篇文章弄懂Python关键字、标识符和变量
Jul 15 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 array_slice函数的使用以及参数详解
2008/08/30 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
Vue组件化开发思考
2018/02/02 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python之yield表达式学习
2014/09/02 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
PyQt5每天必学之组合框
2018/04/20 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
后备干部考察材料
2014/02/12 职场文书
电子银行营销方案
2014/02/22 职场文书
2014学雷锋活动心得体会
2014/03/10 职场文书
婚礼主持词开场白
2014/03/13 职场文书
2015年团支书工作总结
2015/04/03 职场文书
毕业典礼致辞
2015/07/29 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
《观潮》教学反思
2016/02/17 职场文书
Flask response响应的具体使用
2021/07/15 Python
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技