为啥我的简单 pytorch 网络不能在 GPU 设备上运行?

     2023-03-12     106

关键词:

【中文标题】为啥我的简单 pytorch 网络不能在 GPU 设备上运行?【英文标题】:Why doesn't my simple pytorch network work on GPU device?为什么我的简单 pytorch 网络不能在 GPU 设备上运行? 【发布时间】:2019-01-07 09:47:42 【问题描述】:

我根据教程构建了一个简单的网络,但出现此错误:

RuntimeError:预期的类型为 torch.cuda.FloatTensor 的对象,但已找到 为参数 #4 'mat1' 输入 torch.FloatTensor

有什么帮助吗?谢谢!

import torch
import torchvision

device = torch.device("cuda:0")
root = '.data/'

dataset = torchvision.datasets.MNIST(root, transform=torchvision.transforms.ToTensor(), download=True)

dataloader = torch.utils.data.DataLoader(dataset, batch_size=4)


class Net(torch.nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.out = torch.nn.Linear(28*28, 10)

    def forward(self, x):
        x = x.view(x.size(0), -1)
        x = self.out(x)
        return x

net = Net()
net.to(device)

for i, (inputs, labels) in enumerate(dataloader):
    inputs.to(device)
    out = net(inputs)

【问题讨论】:

这个问题是关于 PyTorch,而不是 CUDA。这就是我删除标签的原因。两次。请不要再添加了 【参考方案1】:

TL;DR 这是解决方法

inputs = inputs.to(device)  

为什么?!torch.nn.Module.to()torch.Tensor.to() 之间存在细微差别:Module.to()就地 运算符,Tensor.to() 不是。因此

net.to(device)

更改net 本身并将其移动到device。另一方面

inputs.to(device)

不更改inputs,而是返回inputs副本,该inputs 位于device。要使用该“设备上”副本,您需要将其分配给一个变量,因此

inputs = inputs.to(device)

【讨论】:

有效!太感谢了!我花了几个小时寻找答案。 @Harkonnen 很高兴我能提供帮助。在阅读 pytorch 文档时,您应该注意“就地”操作:有些方法是就地的,有些不是,有些方法具有“就地”变体...... 我有这个错误,因为我没有设置我的GPU设备,为:device = torch.device('cuda')【参考方案2】:
import torch
import numpy as np

x = torch.tensor(np.array(1), device='cuda:0')

print(x.device)  # Prints `cpu`

x = torch.tensor(1, device='cuda:0')

print(x.device)  # Prints `cuda:0`

现在张量驻留在 GPU 上

【讨论】:

你想从答案中说什么不清楚。请您解释为什么使用 numpy 没有将张量推送到 cuda

anaconda中安装pytorch(gpu版)(离线安装)(最简单)(代码片段)

本文介绍在anaconda中安装pytorch。最近因为学习需要,要下载pytorchGPU版本来训练网络。相信pytorch大家都不陌生了,PyTorch是一个Torch7团队开源的Python优先的深度学习框架,提供两个高级功能:强大的GPU加速Tensor计算&... 查看详情

在 Google Colaboratory 上,对于 Pytorch,GPU 的性能比 CPU 慢

】在GoogleColaboratory上,对于Pytorch,GPU的性能比CPU慢【英文标题】:GPUperformingslowerthanCPUforPytorchonGoogleColaboratory【发布时间】:2018-12-1305:13:06【问题描述】:GPU在大约16秒内训练这个网络。CPU在大约13秒内。(我正在取消注释/注释... 查看详情

如何确保所有 PyTorch 代码充分利用 Google Colab 上的 GPU

】如何确保所有PyTorch代码充分利用GoogleColab上的GPU【英文标题】:HowtoensureallPyTorchcodefullyutilisesGPUonGoogleColab【发布时间】:2019-02-0706:30:02【问题描述】:我是PyTorch的新手,一直在做一些关于CIFAR10的教程,特别是在GoogleColab上,... 查看详情

在gpu上训练pytorch代码(代码片段)

文章目录PyTorch操作tensor在不同设备上的操作网络的不同设备上PyTorch操作PyTorch允许我们在程序内部进行计算时,无缝地将数据移动到GPU。当我们使用GPU时,我们可以使用.cuda()方法,当我们使用CPU时,我们可以使用... 查看详情

在gpu上训练pytorch代码(代码片段)

文章目录PyTorch操作tensor在不同设备上的操作网络的不同设备上PyTorch操作PyTorch允许我们在程序内部进行计算时,无缝地将数据移动到GPU。当我们使用GPU时,我们可以使用.cuda()方法,当我们使用CPU时,我们可以使用... 查看详情

在gpu上训练pytorch代码(代码片段)

文章目录PyTorch操作tensor在不同设备上的操作网络的不同设备上PyTorch操作PyTorch允许我们在程序内部进行计算时,无缝地将数据移动到GPU。当我们使用GPU时,我们可以使用.cuda()方法,当我们使用CPU时,我们可以使用... 查看详情

pytorch中多gpu训练指南

...数据量的不断提升,使用多GPU去训练是不可避免的事情。Pytorch在0.4.0及以后的版本中已经提供了多GPU训练的方式,本文简单讲解下使用Pytorch多GPU训练的方式以及一些注意的地方。这里我们谈论的是单主机多GPUs训练,与分布式训... 查看详情

为啥在 conda 安装后 Tensorflow 无法识别我的 GPU?

】为啥在conda安装后Tensorflow无法识别我的GPU?【英文标题】:WhyisTensorflownotrecognizingmyGPUaftercondainstall?为什么在conda安装后Tensorflow无法识别我的GPU?【发布时间】:2021-03-2403:41:50【问题描述】:我是深度学习的新手,过去2天我一... 查看详情

pytorch 从 gpu 中删除模型

】pytorch从gpu中删除模型【英文标题】:pytorchdeletemodelfromgpu【发布时间】:2019-04-2009:53:43【问题描述】:我想在我的项目中基于Pytorch进行交叉验证。而且我没有找到pytorch提供的删除当前模型并清空GPU内存的任何方法。你能告诉... 查看详情

超简单的pytorch(gpu版)安装教程(亲测有效)(代码片段)

之前安装pytorch框架,直接在pytorch官网复制命令下载。顺利安装之后,结果发现竟然是CPU版本,导致运行视频流十分卡顿,浪费了GPU。于是果断卸载pipuninstalltorchpipuninstalltorchvision经过数小时的尝试之后,终于... 查看详情

如何告诉 PyTorch 不使用 GPU?

】如何告诉PyTorch不使用GPU?【英文标题】:HowtotellPyTorchtonotusetheGPU?【发布时间】:2021-06-0822:13:30【问题描述】:我想在CPU和GPU之间进行一些时序比较以及一些分析,并想知道是否有办法告诉pytorch不使用GPU而只使用CPU?我意识到... 查看详情

如何告诉 PyTorch 不使用 GPU?

】如何告诉PyTorch不使用GPU?【英文标题】:HowtotellPyTorchtonotusetheGPU?【发布时间】:2019-04-1510:06:33【问题描述】:我想在CPU和GPU之间进行一些时序比较以及一些分析,并想知道是否有办法告诉pytorch不使用GPU而只使用CPU?我意识到... 查看详情

如何在pytorch中进行并行处理

】如何在pytorch中进行并行处理【英文标题】:Howtodoparallelprocessinginpytorch【发布时间】:2019-08-1601:17:42【问题描述】:我正在研究一个深度学习问题。我正在使用pytorch解决它。我有两个GPU在同一台机器上(16273MiB,12193MiB)。我... 查看详情

为啥我的 SSML 不能在 Alexa 设备上运行?

】为啥我的SSML不能在Alexa设备上运行?【英文标题】:WhydoesmySSMLnotworkonAlexaDevices?为什么我的SSML不能在Alexa设备上运行?【发布时间】:2021-11-1610:46:56【问题描述】:我正在制作一个非常简单的技能来测试Alexa的SSML功能。为简单... 查看详情

在简单的 Rush Hour 求解器中使用 BFS - 为啥我的代码不能求解电路板?

】在简单的RushHour求解器中使用BFS-为啥我的代码不能求解电路板?【英文标题】:UsingBFSinasimpleRushHoursolver-whyismycodenotsolvingtheboard?在简单的RushHour求解器中使用BFS-为什么我的代码不能求解电路板?【发布时间】:2012-12-0918:37:18【... 查看详情

pytorch 未在 gpu 上运行而为真

】pytorch未在gpu上运行而为真【英文标题】:pytorchisn\'trunningongpuwhiletrue【发布时间】:2021-08-2319:17:31【问题描述】:我想在本地gpu上训练,但它只在cpu上运行,而torch.cuda.is_available()实际上是真的,我可以看到我的gpu但它只在cpu上... 查看详情

pytorch指定gpu的方法

参考技术A在生成网络对象之前执行:torch.cuda.set_device(0)net=torch.nn.DataParallel(model,device_ids=[0])net=Net.cuda(0) 查看详情

为啥我不能在 dashcode 中将网络剪辑图标添加到我的 web 应用程序。我啥都试过了?

】为啥我不能在dashcode中将网络剪辑图标添加到我的web应用程序。我啥都试过了?【英文标题】:Whycan\'tIaddawebclipicontomywebappindashcode.I\'vetriedeverything?为什么我不能在dashcode中将网络剪辑图标添加到我的web应用程序。我什么都试过... 查看详情