动态计算图和GPU支持操作

人工智能 深度学习
在深度学习中使用 PyTorch 的主要原因之一,是我们可以自动获得定义的函数的梯度/导数。当我们操作我们的输入时,会自动创建一个计算图。该图显示了如何从输入到输出的动态计算过程。

[[409431]]

动态计算图

在深度学习中使用 PyTorch 的主要原因之一,是我们可以自动获得定义的函数的梯度/导数。

当我们操作我们的输入时,会自动创建一个计算图。该图显示了如何从输入到输出的动态计算过程。

为了熟悉计算图的概念,下面将为以下函数创建一个:

 

这里的 是我们的参数,我们想要优化(最大化或最小化)输出 . 为此,我们想要获得梯度.

在下面的代码中,我将使用[1,2,3]作输入。

  1. # 只有浮动张量有梯度 
  2. x = torch.arange(1,4, dtype=torch.float32, requires_grad=True)  
  3. print("X", x) 
  4.  
  5. # X tensor([1., 2., 3.], requires_grad=True

现在让我来一步一步地构建计算图,了解每个操作是到底是如何添加到计算图中的。

  1. a = x + 2 
  2. b = a ** 2 
  3. c = b + 3 
  4. y = c.mean() 
  5. print("Y", y) 
  6. # Y tensor(19.6667, grad_fn=<MeanBackward0>) 

使用上面的语句,我们创建了一个类似于下图的计算图(通过tensorboard )查看:

我们计算 a 基于输入x 和常数2, b是 a平方等等操作。计算图通常以相反的方向可视化(箭头从结果指向输入)。

我们可以通过backward()在最后一个输出上调用函数来对计算图执行反向传播,这样可以,计算了每个具有属性的张量的梯度requires_grad=True:

  1. y.backward() 

最后打印x.grad就可以查看对应梯度。

 

GPU支持操作

在Pytorch中GPU 可以并行执行数以千计的小运算,因此非常适合在神经网络中执行大型矩阵运算。

「CPU 与 GPU的区别」

PyTorch 使用GPU,需要搭建NVIDIA 的CUDA和cuDNN。

下面代码,检查是否有可用的 GPU:

  1. gpu_avail = torch.cuda.is_available() 
  2. print("Is the GPU available? %s" % str(gpu_avail)) 

 

现在创建一个张量并将其推送到GPU设备:

  1. device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu"
  2. print("Device", device) 
  3. x = x.to(device) 
  4. print("X", x) 
  5.  
  6. # Device cuda 
  7. # X tensor([1., 1., 1.], device='cuda:0'

cuda 旁边的零表示这是计算机上的第0个 GPU 设备。因此,PyTorch 还支持多 GPU 系统,

下面将CPU 上的大型矩阵乘法的运行时间与 GPU 上的运算进行比较:

根据系统中的配置而定,GPU加速提高模型的训练速度。

 

责任编辑:姜华 来源: Python之王
相关推荐

2011-07-26 10:09:08

iPhone 多语言 国际化

2010-01-06 13:41:51

.NET Framew

2017-02-08 17:08:32

谷歌深度学习计算图

2014-07-28 15:11:53

浪潮GPU加速

2022-10-24 15:56:55

PythonPyTorchGPU 计算

2021-08-11 07:22:27

Vue 技巧 开发工具

2021-05-11 14:45:11

芯片半导体技术

2021-03-09 11:23:50

PyTorch 1.8Python函数转换

2009-06-03 08:50:03

微软Windows 7操作系统

2021-04-13 13:21:58

CPUGPU异构

2019-07-22 15:37:56

CPU核心GPU

2021-06-07 14:39:58

鸿蒙HarmonyOS应用

2024-01-02 17:28:12

芯片CPUAI计算

2010-10-08 09:18:06

Ubuntu 10.1GPU硬件加速

2020-12-21 14:23:11

机器学习深度学习技术

2009-06-10 16:09:56

netbeans ru动态语言

2019-01-03 14:21:51

CPUGPU系统

2018-02-01 14:02:48

虚拟化

2011-08-23 14:46:59

云计算
点赞
收藏

51CTO技术栈公众号