各算子库对CNN的支持

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各算子库对CNN的支持相关的知识,希望对你有一定的参考价值。

参考技术A OpenBLAS 是一个优化的 BLAS 库,基于 GotoBLAS2 1.13 BSD 版本。
BLAS(Basic Linear Algebra Subprograms 基础线性代数程序集)是一个应用程序接口(API)标准,用以规范发布基础线性代数操作的数值库(如矢量或矩阵乘法)。该程序集最初发布于1979年,并用于建立更大的数值程序包(如LAPACK)。在高性能计算领域,BLAS被广泛使用。例如,LINPACK的运算成绩则很大程度上取决于BLAS中子程序DGEMM的表现。为提高性能,各软硬件厂商则针对其产品对BLAS接口实现进行高度优化。

内部实现了底层乘法运算,NN相关算法没有实现
内部实现的算法包括:

Intel数学核心函数库(MKL)是一套高度优化、线程安全的数学例程、函数,面向高性能的工程、科学与财务应用。英特尔 MKL 的集群版本包括 ScaLAPACK 与分布式内存快速傅立叶转换,并提供了线性代数 (BLAS、LAPACK 和Sparse Solver)、快速傅立叶转换、矢量数学 (Vector Math) 与随机号码生成器支持,常见NN算法如RN、CNN。

OPEN AI LAB开发了一款轻量级模块化的高性能神经网络推理引擎-Tengine,专门针对Arm嵌入式设备优化,提供超过所有已知开源框架的无与伦比的性能,可跨平台使用支持android,Linux。
并且Tengine框架不依赖于专用AI芯片,现有的成熟芯片通过Tengine框架可以把算力挖掘出来,在本地进行一些AI应用的处理,从而提高了芯片性能,并降低成本。
Tengine同时还支持各类常见卷积神经网络,包括SqueezeNet,MobileNet,AlexNet,ResNet等,支持层融合、8位量化等优化策略。并且通过调用针对不同CPU微构架优化的HCL库,将Arm CPU的性能充分挖掘出来。

针对不同的模型,单独解析,最后推理

ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。

支持大部分常用的 CNN 网络
Classical CNN: VGG AlexNet GoogleNet Inception ...
Practical CNN: ResNet DenseNet SENet FPN ...
Light-weight CNN: SqueezeNet MobileNetV1/V2/V3 ShuffleNetV1/V2 MNasNet ...
Detection: MTCNN facedetection ...
Detection: VGG-SSD MobileNet-SSD SqueezeNet-SSD MobileNetV2-SSDLite ...
Detection: Faster-RCNN R-FCN ...
Detection: YOLOV2 YOLOV3 MobileNet-YOLOV3 YOLOV4...
Segmentation: FCN PSPNet UNet ...
针对不同的模型,单独解析,最后推理

MindSpore是一个新的开源深度学习训练/推理框架,可用于移动、边缘和云场景。MindSpore旨在为数据科学家和算法工程师提供友好设计和高效执行的开发经验,为Ascend AI处理器提供本地支持,以及软硬件协同优化。同时,MindSpore作为一个全球性的人工智能开源社区,旨在进一步推进人工智能软硬件应用的开发和丰富生态系统.MindSpore是一个新的开源深度学习训练/推理框架,可用于移动、边缘和云场景。

以上是关于各算子库对CNN的支持的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你利用Pyecharts库对IP代理数据进行数据可视化分析

jvm库对nio的处理

为啥使用 sklearn 库对随机生成的数据的准确性低

利用Python collection库对Excel数据去重

C++ AMP 库对 F# 有用吗?

如何使用 PHP 的 GD 库对图像执行接缝雕刻?