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处理中文编码和判断编码示例
Feb 26 Python
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
深入理解python try异常处理机制
Jun 01 Python
django输出html内容的实例
May 27 Python
python实现泊松图像融合
Jul 26 Python
python读取Excel实例详解
Aug 17 Python
Django给admin添加Action的步骤详解
May 01 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 Python
Python Dataframe常见索引方式详解
May 27 Python
解决numpy和torch数据类型转化的问题
May 23 Python
python基础学习之生成器与文件系统知识总结
May 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根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
一段实时更新的时间代码
2006/07/07 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
apache部署python程序出现503错误的解决方法
2017/07/24 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
六查六看剖析材料
2014/02/15 职场文书
党员入党表决心的话
2014/03/11 职场文书
争做文明公民倡议书
2014/08/29 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
安全检查汇报材料
2014/12/26 职场文书
消防宣传标语大全
2015/08/03 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
Django+Celery实现定时任务的示例
2021/06/23 Python