该文档用作提供使用ARM-NENO技术在卷积神经网络上应用。
参考相关网站: http://cs231n.github.io/convolutional-networks/
卷积神经网络的计算主要包括大量的卷积核的乘法运算。为了加速乘法运算,可以使用ARM-NEON技术,比如ncnn就依据此类技术实现,除了ncnn外,ARM还提供了官方的基于NEON技术的计算库ARM Compute Library以及专为深度学习设计的ARM NN。根据实现方式分为以下两种:
矩阵乘法通用易理解的表达如上图1所示,其中矩阵乘法在目前的基于CPU的架构中无法达到实时性的主要原因有:
针对上述3个原因,可以思考的方法有三点:
在不更换硬件平台的情况下,可以使用ARM NEON技术更好地发挥硬件性能。基于ARM NEON技术的矩阵乘法加速可以理解为利用矩阵乘法并行性,如图3所示。
如果为了使用GEMM方法进行卷积神经网络加速,需要将卷积神经网络中的卷积层计算转换成矩阵乘法,然后利用GEMM进行加速,卷换过程如图4所示。
通过ARM NEON技术进行卷积神经网络加速,可以采用的路径有:
1.参考2.3将卷积神经网络转换成矩阵乘法,然后参考openblas的实现过程,使用ARM提供的ACL库(ARM Compute Library)或者ARM NN实现。
2.如果是ncnn支持的网络模型,可以使用ncnn进行加速。如果不支持的网络模型,可以参考ncnn对于相关卷积计算的实现做个性化的应用开发。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。