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 相关文章推荐
Django URL传递参数的方法总结
Aug 28 Python
python学习基础之循环import及import过程
Apr 22 Python
Python unittest模块用法实例分析
May 25 Python
Python爬虫之pandas基本安装与使用方法示例
Aug 08 Python
Python常见数字运算操作实例小结
Mar 22 Python
django解决订单并发问题【推荐】
Jul 31 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
python的launcher用法知识点总结
Aug 07 Python
Django-simple-captcha验证码包使用方法详解
Nov 28 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 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 adodb连接不同数据库
2009/03/19 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
PHP children()函数讲解
2019/02/03 PHP
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
Python中Collection的使用小技巧
2014/08/18 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
pandas通过索引进行排序的示例
2018/11/16 Python
python中的colorlog库使用详解
2019/07/05 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
人力资源管理毕业生自荐信
2013/11/21 职场文书
销售合作意向书范本
2015/05/08 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
Python基于百度API识别并提取图片中文字
2021/06/27 Python