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实现从url中提取域名的几种方法
Sep 26 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
查看python下OpenCV版本的方法
Aug 03 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
Jan 10 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
Python中print函数简单使用总结
Aug 05 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
Scrapy爬虫文件批量运行的实现
Sep 30 Python
python Zmail模块简介与使用示例
Dec 19 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
Mar 03 Python
Python中Permission denied的解决方案
Apr 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容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
ini_set的用法介绍
2014/01/07 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
删除条目时弹出的确认对话框
2014/06/05 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
python中的闭包函数
2018/02/09 Python
基于MTCNN/TensorFlow实现人脸检测
2018/05/24 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
Django Form常用功能及代码示例
2020/10/13 Python
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
网络通讯中,端口有什么含义,端口的取值范围
2012/11/23 面试题
资深地理教师自我评价
2013/09/21 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
工作收入住址证明
2014/10/28 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
纯html+css实现打字效果
2021/08/02 HTML / CSS
Mysql排序的特性详情
2021/11/01 MySQL