1

我想知道两者之间的区别是什么:

  1. net:cuda()制作神经网络后使用:
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()
  1. cudnn.somemodules在完成神经网络的过程中使用:
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())
4

2 回答 2

0

:cuda()是使用GPU

cudnn.xxx就是对 GPU 模型进行一些优化,所以添加它之后,训练会比只使用 cuda 更快。

有一个介绍cudnnAccelerate Machine Learning with the cuDNN Deep Neural Network Library

于 2017-10-01T02:44:26.243 回答
0

cuda()是将张量移动到 GPU 以更快地计算操作的调用。

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

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

于 2021-03-12T12:13:52.470 回答