NNPack 使用教程
来源:互联网 发布:gta5联机mod端口 编辑:程序博客网 时间:2024/05/29 07:58
NNPack 使用教程
NNPACK 编译 (Linux OS)
前提:
(1)安装libffi-dev
(2)安装libpython2.7-dev
(3)安装libgit2 http://www.pygit2.org/install.html
(4)安装python-pycurl libcurl4-openssl-dev
(5)安装python-libssh2 libssh2-1-dev
(6)apt-get install python-yaml
1、安装ninja system
2、编译安装 PeachPy
3、下载编译NNPACK
NNPACK详解
一:NNPACK简介
NNPACK由facebook开发,是一个加速神经网络计算的加速包,NNPACK可以在多核CPU平台上提高卷积层计算性能。NNPACK采用的快速卷积算法是基于Fourier transform 和 Winograd transform算法。
二:前向计算的性能
如下图(Intel Core i7 6700K vs BVLC Caffe master branch)
链接:https://github.com/Maratyszcza/NNPACK
LibraryCaffeNNPACKNNPACKNNPACKAlgorithmim2col + sgemmFFT-8x8FFT-16x16Winograd F(6x6, 3x3)AlexNet:conv2315 ms129 ms86 msN/AAlexNet:conv3182 ms87 ms44 ms70 msAlexNet:conv4264 ms109 ms56 ms89 msAlexNet:conv5177 ms77 ms40 ms64 msVGG-A:conv1255 ms303 ms260 ms404 msVGG-A:conv2902 ms369 ms267 ms372 msVGG-A:conv3.1566 ms308 ms185 ms279 msVGG-A:conv3.21091 ms517 ms309 ms463 msVGG-A:conv4.1432 ms228 ms149 ms188 msVGG-A:conv4.2842 ms402 ms264 ms329 msVGG-A:conv5292 ms141 ms83 ms114 msOverFeat:conv2424 ms158 ms73 msN/AOverFeat:conv3250 ms69 ms74 ms54 msOverFeat:conv4927 ms256 ms272 ms173 msOverFeat:conv51832 ms466 ms524 ms315 ms
三:NNPACK支持的层
- 卷积层 (Convolutional layer)
- 全连接层 (Fully-connected layer)
- 池化层 (Max pooling layer)
- ReLU layer
- Softmax layer
四:NNPACK 编译 (Linux OS)
1、编译安装 PeachPy
2、安装ninja 和 ninja-syntax python模块
3、下载编译NNPACK
注意:
编译nnpack过程如果出现一些找不到头文件等情况,一般是需要下载第三方库。在nnpack的包中有对于的目录third-party,分别下载,放到对应得目录中,并分别编译。
FXdiv @ ba65e0d:https://github.com/Maratyszcza/FXdiv/tree/ba65e0de6c48d91be1cd578755f6db172774fe53
gtest-1.7.0 @ c994585:
https://github.com/google/googletest/tree/c99458533a9b4c743ed51537e25989ea55944908
pthreadpool @ 17747d7:
https://github.com/Maratyszcza/pthreadpool/tree/17747d7ef2d54dc15af63f9d05a261e04526ba5d
四:测试
NNPACK编译完成之后,在NNPACK-master/bin目录下有测试卷积、全连接等可执行程序。
例如,测试卷积输入通道 16 ,输出通道 16 , 输入图像180*180,kernel 3*3 ,迭代100次,
执行结果:
五、使用NNPACK 实现卷积
- input channels: 1
- output channels:1
- input size:4*4
- kernel size:3*3
1、代码(conv_nnpack.c):
2、编译
编译,要链接 -lnnpack 和-lphterad。-lphterad是第三方库pthreadpool使用pthread创建线程,pthreadpool是根据平台CPU的核数,创建对应数量的线程。此处代码false使用一个线程。
3、输出结果:
六:NNPACK与 im2col+sgemm卷积性能对比
- im2col+sgemm使用openblas
- intput channels : 16
- output channels :16
- input size : 360*360
- kernel size: 2*2 , 3*3, 5*5
如下图:
图 nnpack vs im2col_segemm
23510nnpack6.69ms7.38ms9.71ms26.44msim2col_sgemm37.83ms86.95ms236.91ms929.66ms
表 nnpack vs im2col_segemm
阅读全文
0 0
- NNPack 使用教程
- NNPack 使用教程
- Mxnet+nnpack安装教程,以及踩过的坑
- nnpack详解
- NNPACK详解
- Install Caffe with NNPACK
- linux下安裝NNPACK
- NNpack的安装和配置
- ncnn与NNPACK-darknet速度比较
- 深度学习(六十一)NNPACK 移植与实验
- 【教程】minicom使用教程
- 使用教程
- 【教程】InstallShield使用完全教程
- 【教程】InstallShield使用完全教程
- 【教程】InstallShield使用完全教程
- svn使用教程-终极教程
- git使用教程,命令教程
- 【教程】InstallShield使用完全教程
- [leetcode]543. Diameter of Binary Tree[facebook]
- Python微信后台开发--环境搭建与接入指南
- nginx与php-fpm通信的两种方式
- Java selenium无界面爬取需要登录的页面+验证码截取+验证码识别python tensorflow
- 用STM32自制APM四轴飞行器
- NNPack 使用教程
- 数组与字符串相关
- http接口跨域解决方法
- n阶Hanoi塔问题
- 安卓简易画板,实现画笔,调色板,画基本形状,以及文件打开存储
- recycleview适配器
- 参数可空
- 数据库分库分表系列(一) 拆分实施策略和示例演示
- 利用oracle过程发告警邮件