![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NV shader
头发光了你就强了
Neural Network and Machine Learning
展开
-
上古激活函数之local response normalizatiion
最近因为工作原因,需要写lrn的gpu shader实现,公式如下:个人觉得lrn只适用于分类网络,且作用不大。其一,网络在初始训练时,权重都是随机值,产生的特征没有表征意义,对没有表征意义的特征进行抑制或者放大,不合理,除非把公式里的几个超参改进成可训练的,随着网络的训练施加影响。其二,对于非分类网络,例如图像生成,相邻通道值是不需要放大差距的,例如网络的最后进程,一般一个通道只表示一个或很少的特征,例如背景,值都是相近的...原创 2020-08-26 10:32:34 · 254 阅读 · 0 评论 -
深度学习之dropout计算细节
dropout得原理和作用就不必说了,dropout是以给定得概率随机选取输出值置0,但在置0后对与未置0的值,还会乘以1(1-dropout_rate),为什么要这样,拿最简单的例子来说,假如输出一个概率向量,要保持概率和始终为1....原创 2020-08-21 14:52:11 · 924 阅读 · 1 评论 -
deep learning batch normalization实现之cudnn
代码不方便上传,只能传图片。kernel头文件:kernel cpp文件太大 传不了测试文件:原创 2020-08-12 16:42:30 · 349 阅读 · 0 评论 -
deep learning之batch normalization详解
建议直接看paper:paper地址batch normalization已经是一门很老的技术了,2015年就出了paper,相信大家都耳熟能详,已经是网络的必备结构,但其中的一些细节,恐怕容易疏忽。公式:x为bn层的输入数据,此公式的作用是把输入数据的分布的期望和方差变为0和1。bn的模式有两种,一种是通用模式:per activation,另一种只适合卷积:spatial。对于per activation:求期望,假设数据格式为NCHW,大小为data[10][10][10][10], 产原创 2020-08-12 16:28:02 · 165 阅读 · 0 评论 -
deep learning张量加法实现之cudnn
由于工作需要,需要用cudnn实现tensor add kernel.代码传不了,只能传图片头文件:cpp文件测试文件:原创 2020-08-06 17:40:48 · 177 阅读 · 0 评论 -
C++数据类型之half float
c++浮点类型只有float与double,最近工作需要用半精度浮点。首先我们得搞清楚float在内存的二进制表示,详情见:IEEE754浮点定义如下图:float的内存表示由:1位符号为、8位指数位、23位有效数字位组成组合公式为:8指数位的理论取值范围为:[-128,127]或者[0,255],但此处的取值范围却是为:[-126,127],00000000和00000001都表示-126,11111111表示nan(not a number)。我们递推一下:00000000:-126原创 2020-08-06 17:19:31 · 11208 阅读 · 2 评论 -
深度学习operation: matmul之NV shader实现
最近工作需要写shader,决定开个新坑,我写过的shader都会在后续文章公开。写shader还是有必要了解一下NV GPU的硬件建构,至少知道device代码运行时的物理地址映射,CPU程序运行时有堆和栈的概念,而NV GPU 运行时是不同的,例如CPU c++ 函数内局部变量放在栈里,但NV GPU c++函数局部变量放在相应的SP寄存器里,特别是要写出高性能shader,往往需要对针对特定硬件架构做优化。此实现利用了share memory做加速。下面是工程结构:build.shnvcc原创 2020-07-25 15:12:59 · 266 阅读 · 0 评论