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使用marshal模块序列化实例
Sep 25 Python
python实现12306抢票及自动邮件发送提醒付款功能
Mar 08 Python
windows下添加Python环境变量的方法汇总
May 14 Python
python基于http下载视频或音频
Jun 20 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
Python3中exp()函数用法分析
Feb 19 Python
Django实现学生管理系统
Feb 26 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
Python对列表的操作知识点详解
Aug 20 Python
py-charm延长试用期限实例
Dec 22 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
浅谈Python3中datetime不同时区转换介绍与踩坑
Aug 02 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多个字符串替换成同一个的解决方法
2013/06/18 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
用js解决数字不能换行问题
2010/08/10 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
浅谈Python单向链表的实现
2015/12/24 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
用python计算文件的MD5值
2020/12/23 Python
最新奶茶店创业计划书
2014/01/25 职场文书
统计系教授推荐信
2014/02/28 职场文书
大学生工作求职信
2014/06/23 职场文书
田径运动会通讯稿
2014/09/13 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
小学教师工作总结2015
2015/04/07 职场文书
孔繁森观后感
2015/06/10 职场文书
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP
Nginx报404错误的详细解决方法
2022/07/23 Servers