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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
python创建关联数组(字典)的方法
May 04 Python
python文件操作相关知识点总结整理
Feb 22 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
python负载均衡的简单实现方法
Feb 04 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
在OpenCV里使用Camshift算法的实现
Nov 22 Python
Python argparse模块使用方法解析
Feb 20 Python
python集合能干吗
Jul 19 Python
python如何对链表操作
Oct 10 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
php实例化一个类的具体方法
2019/09/19 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
nodejs下打包模块archiver详解
2014/12/03 NodeJs
jQuery 遍历函数详解
2015/07/05 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Python实现重建二叉树的三种方法详解
2018/06/23 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
python多线程扫描端口(线程池)
2019/09/04 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
中学生获奖感言
2014/02/04 职场文书
置业顾问岗位职责
2014/03/02 职场文书
十佳护士先进事迹
2014/05/08 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书