将pytorch的网络等转移到cuda

神经网络一般用GPU来跑,我们的神经网络框架一般也都安装的GPU版本,本文就简单记录一下GPU使用的编写。

GPU的设置不在model,而是在Train的初始化上。

第一步是查看是否可以使用GPU

self.GPU_IN_USE = torch.cuda.is_available()

就是返回这个可不可以用GPU的函数,当你的pytorch是cpu版本的时候,他就会返回False。

然后是:

self.device = torch.device('cuda' if self.GPU_IN_USE else 'cpu')

torch.device是代表将torch.tensor分配到哪个设备的函数

接着是,我看到了一篇文章,原来就是将网络啊、数据啊、随机种子啊、损失函数啊、等等等等直接转移到CUDA上就好了!

于是下面就好理解多了:

转移模型:

self.model = Net(num_channels=1, upscale_factor=self.upscale_factor, base_channel=64, num_residuals=4).to(self.device)

设置cuda的随机种子:

torch.cuda.manual_seed(self.seed)

转移损失函数:

self.criterion.cuda()

转移数据:

data, target = data.to(self.device), target.to(self.device)

pytorch 网络定义参数的后面无法加.cuda()

pytorch定义网络__init__()的时候,参数不能加“cuda()", 不然参数不包含在state_dict()中,比如下面这种写法是错误的

self.W1 = nn.Parameter(torch.FloatTensor(3,3), requires_grad=True).cuda()

应该去掉".cuda()"

self.W1 = nn.Parameter(torch.FloatTensor(3,3), requires_grad=True)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • pytorch中.to(device) 和.cuda()的区别说明

    原理 .to(device) 可以指定CPU 或者GPU device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # 单GPU或者CPU model.to(device) #如果是多GPU if torch.cuda.device_count() > 1: model = nn.DataParallel(model,device_ids=[0,1,2]) model.to(

  • Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    先说下自己之前的环境(都是Linux系统,差别不大): Centos7.6 NVIDIA Driver Version 440.33.01(等会需要更新驱动) CUDA10.1 Pytorch1.6/1.7 提示,如果想要保留之前的PyTorch1.6或1.7的环境,请不要卸载CUDA环境,可以通过Anaconda管理不同的环境,互不影响.但是需要注意你的NVIDIA驱动版本是否匹配. 在这里能够看到官方给的对应CUDA版本所需使用驱动版本. 通过上表可以发现,如果要使用CUDA11.1,那么需

  • pytorch model.cuda()花费时间很长的解决

    解决方法之一: 如果pytorch在进行model.cuda()操作需要花费的时间很长,长到你怀疑GPU的速度了,那就是不正常的. 如果你用的pytorch版本是0.3.0,升级到0.3.1就好了! .cuda()加载时间很长的其他解决方法 方法一: pip install --upgrade --force-reinstall http://download.pytorch.org/whl/cu80/torch-0.2.0.post3-cp27-cp27mu-manylinux1_x86_64

  • PyTorch CUDA环境配置及安装的步骤(图文教程)

    Pytorch版本介绍 torch:1.6 CUDA:10.2 cuDNN:8.1.0 ✨安装 NVIDIA 显卡驱动程序 一般 电脑出厂/装完系统 会自动安装显卡驱动 如果有 可直接进行下一步 下载链接 http://www.nvidia.cn/Download/index.aspx?lang=cn 选择和自己显卡相匹配的显卡驱动 下载安装 ✨确认项目所需torch版本 # pip install -r requirements.txt # base ---------------------

  • pytorch 如何用cuda处理数据

    1 设置GPU的一些操作 设置在os端哪些GPU可见,如果不可见,那肯定是不能够调用的~ import os GPU = '0,1,2' os.environ['CUDA_VISIBLE_DEVICES'] =GPU torch.cuda.is_available()查看cuda是否可用. if torch.cuda.is_available(): torch.backends.cudnn.benchmark = True ''' 如果网络的输入数据维度或类型上变化不大,设置 torch.bac

  • 将pytorch的网络等转移到cuda

    神经网络一般用GPU来跑,我们的神经网络框架一般也都安装的GPU版本,本文就简单记录一下GPU使用的编写. GPU的设置不在model,而是在Train的初始化上. 第一步是查看是否可以使用GPU self.GPU_IN_USE = torch.cuda.is_available() 就是返回这个可不可以用GPU的函数,当你的pytorch是cpu版本的时候,他就会返回False. 然后是: self.device = torch.device('cuda' if self.GPU_IN_USE

  • pytorch 在网络中添加可训练参数,修改预训练权重文件的方法

    实践中,针对不同的任务需求,我们经常会在现成的网络结构上做一定的修改来实现特定的目的. 假如我们现在有一个简单的两层感知机网络: # -*- coding: utf-8 -*- import torch from torch.autograd import Variable import torch.optim as optim x = Variable(torch.FloatTensor([1, 2, 3])).cuda() y = Variable(torch.FloatTensor([4,

  • 关于pytorch中网络loss传播和参数更新的理解

    相比于2018年,在ICLR2019提交论文中,提及不同框架的论文数量发生了极大变化,网友发现,提及tensorflow的论文数量从2018年的228篇略微提升到了266篇,keras从42提升到56,但是pytorch的数量从87篇提升到了252篇. TensorFlow: 228--->266 Keras: 42--->56 Pytorch: 87--->252 在使用pytorch中,自己有一些思考,如下: 1. loss计算和反向传播 import torch.nn as nn

  • pytorch教程网络和损失函数的可视化代码示例

    目录 1.效果 2.环境 3.用到的代码 1.效果 2.环境 1.pytorch 2.visdom 3.python3.5 3.用到的代码 # coding:utf8 import torch from torch import nn, optim # nn 神经网络模块 optim优化函数模块 from torch.utils.data import DataLoader from torch.autograd import Variable from torchvision import t

  • Pytorch 解决自定义子Module .cuda() tensor失败的问题

    最近在刚从tensorflow转入pytorch,对于自定义的nn.Module 碰到了个问题,即使把模组 modle=Model().cuda(),里面的子Module的parameter都没有被放入cuda,导致输入是torch.cuda.FloatTensor,但是比如CNN的weight却还是torch.FloatTensor (当然最粗暴的方法就是直接在子模组里面都用了 .cuda() 但是问题并不在那,可能是调用子模组的时候,存在某些错误,导致父模组没有把子模组的parameter注

  • pytorch查看网络参数显存占用量等操作

    1.使用torchstat pip install torchstat from torchstat import stat import torchvision.models as models model = models.resnet152() stat(model, (3, 224, 224)) 关于stat函数的参数,第一个应该是模型,第二个则是输入尺寸,3为通道数.我没有调研该函数的详细参数,也不知道为什么使用的时候并不提示相应的参数. 2.使用torchsummary pip in

  • Pytorch训练网络过程中loss突然变为0的解决方案

    问题 // loss 突然变成0 python train.py -b=8 INFO: Using device cpu INFO: Network: 1 input channels 7 output channels (classes) Bilinear upscaling INFO: Creating dataset with 868 examples INFO: Starting training: Epochs: 5 Batch size: 8 Learning rate: 0.001

  • Pytorch 使用不同版本的cuda的方法步骤

    由于课题的原因,笔者主要通过 Pytorch 框架进行深度学习相关的学习和实验.在运行和学习网络上的 Pytorch 应用代码的过程中,不少项目会标注作者在运行和实验时所使用的 Pytorch 和 cuda 版本信息.由于 Pytorch 和 cuda 版本的更新较快,可能出现程序的编译和运行需要之前版本的 Pytorch 和 cuda 进行运行环境支持的情况.比如笔者遇到的某个项目中编写了 CUDAExtension 拓展,而其中使用的 cuda 接口函数在新版本的 cuda 中做了修改,使得

  • pytorch 查看cuda 版本方式

    由于pytorch的whl 安装包名字都一样,所以我们很难区分到底是基于cuda 的哪个版本. 有一条指令可以查看 import torch print(torch.version.cuda) 补充知识:pytorch:网络定义参数的时候后面不能加".cuda()" pytorch定义网络__init__()的时候,参数不能加"cuda()", 不然参数不包含在state_dict()中,比如下面这种写法是错误的 self.W1 = nn.Parameter(tor

  • Pytorch自动求导函数详解流程以及与TensorFlow搭建网络的对比

    一.定义新的自动求导函数 在底层,每个原始的自动求导运算实际上是两个在Tensor上运行的函数.其中,forward函数计算从输入Tensor获得的输出Tensors.而backward函数接收输出,Tensors对于某个标量值得梯度,并且计算输入Tensors相对于该相同标量值得梯度. 在Pytorch中,可以容易地通过定义torch.autograd.Function的子类实现forward和backward函数,来定义自动求导函数.之后就可以使用这个新的自动梯度运算符了.我们可以通过构造一

随机推荐