CUDNN学习笔记(1)
cuDNN概述
NVIDIA cuDNN是一个GPU加速深层神经网络原语库。它提供了在DNN应用程序中频繁出现的例程的高度优化的实现:
- 卷积前馈和反馈,
- pooling前馈和反馈
- softmax前馈和反馈
神经元前馈和反馈:
- 整流线性(ReLU)
-sigmoid - 双曲线正切(TANH)
- 张量转换函数
- 整流线性(ReLU)
- 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)相关推荐
- cuDNN学习笔记(3)-- 卷积公式
卷积公式 卷积公式的参数 卷积公式 标准的卷积公式 带填充的卷积公式 欠采样的卷积公式 膨胀的卷积公式 使用卷积模式的卷积公式 使用分组卷积模式的卷积公式 小结 cuDNN提供了各种各样的API函数, ...
- 【theano-windows】学习笔记十一——theano中与神经网络相关函数
前言 经过softmax和MLP的学习, 我们发现thenao.tensor中除了之前的博客[theano-windows]学习笔记五--theano中张量部分函数提到的张量的定义和基本运算外, 还有 ...
- AI学习笔记(九)从零开始训练神经网络、深度学习开源框架
AI学习笔记之从零开始训练神经网络.深度学习开源框架 从零开始训练神经网络 构建网络的基本框架 启动训练网络并测试数据 深度学习开源框架 深度学习框架 组件--张量 组件--基于张量的各种操作 组件- ...
- Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)
0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...
- PyTorch学习笔记(一):PyTorch环境安装
往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本系列目录: PyTorch学习笔记(一):PyTorch环境安 ...
- 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)
长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...
- 《基于GPU加速的计算机视觉编程》学习笔记
<基于GPU加速的计算机视觉编程>学习笔记(1) 最近打算 准备工作 CUDA开发环境(主要是查看N卡的信息) 在WIN10下安装CUDA工具包 最近打算 在训练模型的时候,感觉电脑非常吃 ...
- PaddlePaddle飞桨论文复现营——3D Residual Networks for Action Recognition学习笔记
PaddlePaddle飞桨论文复现营--3D Residual Networks for Action Recognition学习笔记 1 背景知识 1.1 C3D C3D是一种3D卷积提取视频特征 ...
- 视觉学习笔记6——YOLOv5(v6.2)部署与代码理解
文章目录 前言 一.YOLOv5是什么? 二.环境搭建 1.基本环境 2.特殊环境 三.自定义训练 模型训练 模型测试 四.源码个人理解 1.detect.py文件 2.yolo.py文件 3. tr ...
- 9月6日关键点检测学习笔记——人脸和手部特征点检测
文章目录 前言 一.干扰因素 1.主动因素 2.固有因素 二.特征点检测 1.PFLD 2.LLCV 三.人脸比对 1.人脸 1:1 2.人脸 1:n 3.人脸 1:N 4.人脸 M:N 四.高清分辨 ...
最新文章
- SQL查询1064报错 [ERR] 1064 - You have an error in your SQL syntax; check the manual.......
- (转载)Android手机开发总结
- 2.9 情感分类-深度学习第五课《序列模型》-Stanford吴恩达教授
- 【CentOS Linux 7】实验1【VMware安装、新建虚拟机;63个基础命令运行结果图】
- Java 方法、 流(Stream)、文件(File)和IO 总结
- 09.span query 查询
- 求解集合A与B的差集
- shell waite php,linux shell wait命令详解
- db2数据库日期减一天_DB2 日期时间函数
- 国货之光!百度飞桨与华为麒麟重磅合作
- .NET面试基础知识
- python打开autocad软件_利用Python自动化操作AutoCAD的实现
- apple id两步验证服务器,什么是Apple ID两步验证 苹果ID二次验证流程
- 学数学,读原著,勤思考,效果好
- 联通混改BATJ悉数入局,拿出数百亿的百度们有什么阳谋?
- 项目管理 之七 SSH、GPG 密钥生成步骤、部署 Github、Gitee 及使用效果
- WPF x:Key标签
- xp 解除计算机锁定,Windows XP锁定屏幕的三种方法
- 计算机专业二本可以考cfa,计算机专业备考CFA一年经验分享
- Vscode——调整左侧菜单字体大小