- 博客(47)
- 资源 (2)
- 收藏
- 关注
原创 MKL-DNN学习笔记 (七) Post-ops操作
MKL-DNN优化技术里,有一个很重要的技术就是层融合(Layer Fusion)所谓的Layer fusion, 就是把好几层的计算合并成一层的操作里,例如下图左边的计算一共包含了3层Convolution+Sum+ReLU, 每层之间都包含了输入数据和输出数据的读写。通过读取观察每层输出的数据,我们也可以知道神经网络每层到底做了些什么,但是实际应用中我们只关心神经网络最开始的输入数据和最终...
2019-10-12 13:48:53 1250
原创 MKL-DNN学习笔记 (六) 实现BatchNorm层
接下来实现基于MKL-DNN的BN层先复习一下BatchNorm层的计算公式这个公式里mean为均值,var为方差,scale为缩放因子,shift是平移值epsilon为一个常数,通常默认值为0.001或者可以在网络模型里读出来,主要用来防止出现方差var=0的时候出现除零错误而添加进去的在 纯C++超分辨率重建DRRN --改编--(二)归一化(BatchNorm) 和 缩...
2019-10-12 12:46:11 965
原创 MKL-DNN学习笔记 (五) 实现Conv层的快速计算
上一篇我们实现了利用mkldnn做最基本的卷积计算的代码从mkldnn文档里的这篇文章 Understanding Memory Formats里描述了memory对象的几种基本内存排列格式和类型我们目前基于memory::format_tag::nhwc定义的内存对象的数据在内存中排列方式如下图所示但是mkldnn更推荐我们创建基于blocked layout的内存对象,据称这样...
2019-10-11 15:31:23 2707
原创 MKL-DNN学习笔记 (四) Conv层的代码实现和分析
接下来实现卷积层Conv的计算为了简单起见,我用了一个N=1,C=2,H=W=5的输入。同时卷积层kernel大小KH = 3, KW = 3, IC=OC=2。 const int N = 1, H = 5, W = 5, C = 2; const int IC = C, OC = IC, KH = 3, KW = 3;这样可以用手工计算卷积的结果来比较mkldnn的输出,...
2019-10-11 11:21:33 1747 7
原创 MKL-DNN学习笔记 (三) ReLU层的代码实现和分析
ReLU层的实现相对比较简单,第一篇文章里用到的cpu_getting_started.cpp实际上就是一个ReLU的实现。所以我们只要分析一下这部分代码就可以了,正好借着这个机会看看整个mkldnn编程的思路官方mkldnn的开发文档可以在这里看到https://intel.github.io/mkl-dnn/整个代码的流程如下可以看到整个mkldnn的开发思路都是任何对象(例...
2019-10-10 15:36:31 1692
原创 MKL-DNN学习笔记 (二) 超分辨率推理模型的选择 - DRRN
一切不结合实践的理论文章都是耍流氓!!!所以这里学习MKL-DNN的最终目的是把mkldnn放到一个实际的超分辨率推理应用中去做加速。这里我选中了下面这篇文章的DRRN模型推理加速来做我这次学习的最终目的纯C++超分辨率重建DRRN --改编DRRN的网络架构如下(图片来自DRRN的论文, 地址 http://cvlab.cse.msu.edu/pdfs/Tai_Yang_Liu_CV...
2019-10-10 14:38:54 905
原创 MKL-DNN学习笔记 (一) windows下环境配置和编译sample
最近在研究超分辨率重建的推理加速,需要用到一些加速算法库。CPU下面要用到MKL-DNN的加速库,网上能找到的资源不多,这里把我学习的心得记录一下,给大家做个参考.。MKL-DNN的官方网址在这里https://github.com/intel/mkl-dnn它是由Intel开发和维护的一个开源算法库,应该很多代码是出自Intel另一个闭源算法库mkl。从其他地方看到这个库NB的...
2019-10-10 12:06:20 3174 4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人