我想知道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())
答案 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 及更早版本的主要功能、软件增强和改进以及已知问题。