cuDNN概述
NVIDIA cuDNN是一个GPU加速深层神经网络原语库。它提供了在DNN应用程序中频繁出现的例程的高度优化的实现:

  • 卷积前馈和反馈,
  • pooling前馈和反馈
  • softmax前馈和反馈
  • 神经元前馈和反馈:

    • 整流线性(ReLU)
      -sigmoid
    • 双曲线正切(TANH)
    • 张量转换函数
  • LRN,LCN和批量归一化前进和后退

cuDNN的卷积程序旨在提高性能,以最快的GEMM(矩阵乘法)为基础实现此类例程,同时使用更少的内存。
cuDNN具有可定制的数据布局,支持四维张量的灵活维度排序,跨步和子区域,用作所有例程的输入和输出。这种灵活性可以轻松集成到任何神经网络实现中,并避免使用基于GEMM的卷积有时需要的输入/输出转换步骤。
cuDNN提供基于上下文的API,可以轻松实现与CUDA流的多线程和(可选)互操作性。
编程模型:
cuDNN库公开了一个Host API,但是假定对于使用GPU的操作,可以从设备直接访问必要的数据。

使用cuDNN的应用程序必须通过调用来初始化库上下文的句柄 cudnnCreate()。这个句柄被显式地传递给每一个在GPU数据上运行的后续库函数。一旦应用程序完成使用cuDNN,它就可以释放与库处理相关的资源 cudnnDestroy()。这种方法允许用户在使用多个主机线程,GPU和CUDA流时显式控制库的功能。例如,一个应用程序可以使用cudaSetDevice()要将不同的设备与不同的主机线程关联起来,并在每个主机线程中关联,请使用独特的cuDNN句柄,该句柄将库调用指向与其关联的设备。用不同的手柄创建的cuDNN库调用将自动运行在不同的设备上。与特定cuDNN上下文相关联的设备被假定在相应的之间保持不变cudnnCreate() 和cudnnDestroy()调用。为了使cuDNN库在同一个主机线程中使用不同的设备,应用程序必须设置通过调用使用的新设备cudaSetDevice() 然后通过调用创建另一个与新设备关联的cuDNN上下文 cudnnCreate()。
符号:
从CUDNN v4开始,我们采用了数学启发的图层输入和输出表示法 X,Y,DX,DY,B,W用于通用图层参数。这样做是为了提高可读性并便于理解参数含义。现在所有的层都遵循推理期间的统一惯例
y = layerFunction(x,otherParams)。
并在反向传播
(dx,dOtherParams)= layerFunctionGradient(x,y,dy,otherParams)
对于卷积来说,公式是
y = x * w + b
w 是滤波器权重的矩阵, X 是上一层的数据(在推理期间), y 是下一层的数据, b 是偏见和 *是卷积运算符。在反向传播例程中,参数保持其含义。 DX,DY,DW,DB始终参考最终网络误差函数相对于给定参数的梯度。所以DY在所有后向传播例程中,总是指通过网络计算图反向传播的错误梯度。类似于更专门化层中的其他参数,例如,dMeans 或 dBnBias 指的是这些参数的损失函数的梯度。

CUDNN学习笔记(1)相关推荐

  1. cuDNN学习笔记(3)-- 卷积公式

    卷积公式 卷积公式的参数 卷积公式 标准的卷积公式 带填充的卷积公式 欠采样的卷积公式 膨胀的卷积公式 使用卷积模式的卷积公式 使用分组卷积模式的卷积公式 小结 cuDNN提供了各种各样的API函数, ...

  2. 【theano-windows】学习笔记十一——theano中与神经网络相关函数

    前言 经过softmax和MLP的学习, 我们发现thenao.tensor中除了之前的博客[theano-windows]学习笔记五--theano中张量部分函数提到的张量的定义和基本运算外, 还有 ...

  3. AI学习笔记(九)从零开始训练神经网络、深度学习开源框架

    AI学习笔记之从零开始训练神经网络.深度学习开源框架 从零开始训练神经网络 构建网络的基本框架 启动训练网络并测试数据 深度学习开源框架 深度学习框架 组件--张量 组件--基于张量的各种操作 组件- ...

  4. Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)

    0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...

  5. PyTorch学习笔记(一):PyTorch环境安装

    往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本系列目录: PyTorch学习笔记(一):PyTorch环境安 ...

  6. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)

    长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...

  7. 《基于GPU加速的计算机视觉编程》学习笔记

    <基于GPU加速的计算机视觉编程>学习笔记(1) 最近打算 准备工作 CUDA开发环境(主要是查看N卡的信息) 在WIN10下安装CUDA工具包 最近打算 在训练模型的时候,感觉电脑非常吃 ...

  8. PaddlePaddle飞桨论文复现营——3D Residual Networks for Action Recognition学习笔记

    PaddlePaddle飞桨论文复现营--3D Residual Networks for Action Recognition学习笔记 1 背景知识 1.1 C3D C3D是一种3D卷积提取视频特征 ...

  9. 视觉学习笔记6——YOLOv5(v6.2)部署与代码理解

    文章目录 前言 一.YOLOv5是什么? 二.环境搭建 1.基本环境 2.特殊环境 三.自定义训练 模型训练 模型测试 四.源码个人理解 1.detect.py文件 2.yolo.py文件 3. tr ...

  10. 9月6日关键点检测学习笔记——人脸和手部特征点检测

    文章目录 前言 一.干扰因素 1.主动因素 2.固有因素 二.特征点检测 1.PFLD 2.LLCV 三.人脸比对 1.人脸 1:1 2.人脸 1:n 3.人脸 1:N 4.人脸 M:N 四.高清分辨 ...

最新文章

  1. SQL查询1064报错 [ERR] 1064 - You have an error in your SQL syntax; check the manual.......
  2. (转载)Android手机开发总结
  3. 2.9 情感分类-深度学习第五课《序列模型》-Stanford吴恩达教授
  4. 【CentOS Linux 7】实验1【VMware安装、新建虚拟机;63个基础命令运行结果图】
  5. Java 方法、 流(Stream)、文件(File)和IO 总结
  6. 09.span query 查询
  7. 求解集合A与B的差集
  8. shell waite php,linux shell wait命令详解
  9. db2数据库日期减一天_DB2 日期时间函数
  10. 国货之光!百度飞桨与华为麒麟重磅合作
  11. .NET面试基础知识
  12. python打开autocad软件_利用Python自动化操作AutoCAD的实现
  13. apple id两步验证服务器,什么是Apple ID两步验证 苹果ID二次验证流程
  14. 学数学,读原著,勤思考,效果好
  15. 联通混改BATJ悉数入局,拿出数百亿的百度们有什么阳谋?
  16. 项目管理 之七 SSH、GPG 密钥生成步骤、部署 Github、Gitee 及使用效果
  17. WPF x:Key标签
  18. xp 解除计算机锁定,Windows XP锁定屏幕的三种方法
  19. 计算机专业二本可以考cfa,计算机专业备考CFA一年经验分享
  20. Vscode——调整左侧菜单字体大小

热门文章

  1. 1、redis之安装与配置
  2. (转)战斗bug技巧全攻略
  3. 广州有这么一个无聊的人
  4. oracle启动数据库错误
  5. 线程?进程?-----该停下来思考一下了
  6. 君正X1500基于Minios的crash分析
  7. 内存管理 kmalloc
  8. 蓝桥杯省赛2014年Java组B组
  9. Voltage Keepsake CodeForces - 801C(二分)
  10. 用计算机模拟高空救援的过程是人工智能在,本科-人工智能复习题