用于深度学习的 cuDNN
大规模执行卷积与张量操作
用于深度学习的 cuDNN 是 CoddyKit 上的免费 CUDA Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CUDA Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CUDA Academy 课程共包含 4 节课。
AI 框架背后的引擎
cuDNN 是 NVIDIA 的深度学习库。PyTorch 和 TensorFlow 依靠它快速执行卷积及其他神经网络基本操作。🧠
卷积为何需要帮助
卷积会让一个小滤波器在图像上滑动,并执行大量数学运算。cuDNN 的实现速度远快于朴素内核。
从句柄开始
与 cuBLAS 一样,cuDNN 将状态保存在一个句柄中。您只需创建一次,之后重复用于每个操作,并在关闭时销毁。
cudnnHandle_t h;
cudnnCreate(&h);描述您的数据
cuDNN 通过描述符工作。张量描述符记录形状、数据类型和布局,让库准确了解正在处理的数据。
cudnnTensorDescriptor_t xDesc;
cudnnCreateTensorDescriptor(&xDesc);NCHW 布局
张量通常采用 NCHW 格式:批次、通道、高度、宽度。正确设置此布局对于确保计算对齐至关重要。
cudnnSetTensor4dDescriptor(xDesc,
CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, N, C, H, W);滤波器有自己的描述符
卷积内核权重使用独立的滤波器描述符,用于描述输出通道、输入通道以及滤波器的高度和宽度。
cudnnFilterDescriptor_t wDesc;
cudnnCreateFilterDescriptor(&wDesc);卷积设置
卷积描述符保存填充、步幅和膨胀率,这些参数决定滤波器如何扫过输入张量。
选择算法
cuDNN 提供多种卷积算法,在速度和内存使用之间有不同取舍。您可以根据张量形状查询最合适的算法。
预留工作区
快速算法需要临时空间。您需要在设备上分配一个工作区缓冲区,其大小由 cuDNN 提前告知。
size_t bytes;
cudnnGetConvolutionForwardWorkspaceSize(...,&bytes);运行前向传播
cudnnConvolutionForward 会将所有内容连接起来:句柄、描述符、算法和工作区通过一次调用生成输出特征图。
cudnnConvolutionForward(h, &alpha, xDesc, x,
wDesc, w, convDesc, algo, ws, bytes, &beta, yDesc, y);不只是卷积
cuDNN 还可以加速池化、激活和归一化,这些也是现代神经网络的组成层。
快速检查
回想一下 cuDNN 专门用于加速什么操作。
回顾
您设置了一个句柄,以 NCHW 格式描述张量和滤波器,使用工作区选择算法,并运行了卷积前向传播。🎓
常见问题解答
「用于深度学习的 cuDNN」课时是免费的吗?
是的 — 「用于深度学习的 cuDNN」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CUDA Academy 课程的其余内容,请升级到 CoddyKit PRO。 CUDA Academy 课程共包含 4 节课。
「用于深度学习的 cuDNN」这节课中我会学到什么?
大规模执行卷积与张量操作 你通过在浏览器中直接运行的动手代码来练习 CUDA Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CUDA Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CUDA Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「用于深度学习的 cuDNN」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CUDA Academy 课中编写并运行代码吗?
能。每节 CUDA Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 正确使用 cuBLAS GEMM
- Thrust 向量与变换
- Thrust 归约、扫描与排序
- 用于深度学习的 cuDNN