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 相关文章推荐
Python2.x版本中maketrans()方法的使用介绍
May 19 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
python+django+sql学生信息管理后台开发
Jan 11 Python
解决python opencv无法显示图片的问题
Oct 28 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
pytest中文文档之编写断言
Sep 12 Python
Python属性和内建属性实例解析
Jan 14 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
Python同时迭代多个序列的方法
Jul 28 Python
python如何利用Mitmproxy抓包
Oct 10 Python
Python 实现一个简单的web服务器
Jan 03 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编程中10个最常见的错误
2014/08/08 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
jquery map方法使用示例
2014/04/23 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
Python内建数据结构详解
2016/02/03 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
北承题目(C++)
2012/05/16 面试题
C#的几个面试问题
2016/05/22 面试题
汽车驾驶求职信
2013/10/25 职场文书
机关搬迁方案
2014/05/18 职场文书
面试自我评价范文
2014/09/17 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
给老婆的检讨书
2015/01/27 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书