火炬:使用net:cuda()和使用cudnn.somemodules之间有什么区别

时间:2017-06-04 15:39:41

标签: torch cudnn

我想知道1)在制作神经网络后使用net:cuda()和2)在完成神经网络的过程中使用cudnn.somemodules之间存在差异。

即。第1版和第1版之间的差异第2版​​

[ver 1]

local net = nn.Sequential()
net:add(nn.SpatialConvolution(3, 8, 5, 5))
net:add(nn.View(8*20*20))
net:add(nn.Linear(8*20*20, 10))
net:add(nn.LogSoftMax())
net:cuda()

[ver 2]

local net = nn.Sequential()
net:add(cudnn.SpatialConvolution(3, 8, 5, 5))
net:add(cudnn.View(8*20*20))
net:add(cudnn.Linear(8*20*20, 10))
net:add(cudnn.LogSoftMax())
  • 不确定上述代码是否有效。它们只是为了展示一些例子

2 个答案:

答案 0 :(得分:0)

:cuda()是使用GPU

cudnn.xxx是对GPU模型使用一些优化,所以在添加它之后,训练将比仅使用cuda更快。

cudnn的简介:Accelerate Machine Learning with the cuDNN Deep Neural Network Library

答案 1 :(得分:0)

cuda() 是将张量移动到 GPU 以加快运算计算速度的调用。

cudnn 是一个 cuda 优化模块库,类似于 nn。如果在 GPU 上工作,使用 cudnn 模拟会更快,但您的代码将无法移植到 CPU 设备:

<块引用>

NVIDIA CUDA 深度神经网络 (cuDNN) 是一个 GPU 加速的深度神经网络基元库。它提供了 DNN 应用程序中经常出现的例程的高度调整的实现。这些发行说明描述了 cuDNN 8.1.1 及更早版本的主要功能、软件增强和改进以及已知问题。