当前研究人工智能算法的方法,即通过编程语言编写程序,模拟人的智能行为,如判别样本类别和实时视频中跟踪目标。
各种编程语言种类繁多,但对于人工智能应用来说,由于需要和诸如GPU、AI芯片等硬件进行直接交互,通常使用C/C++语言编写相应的处理模块。Python语言因其良好的C/C++跨语言接口、科学计算库、简单高效的编程方式等特点,已成为人工智能应用进行训练和开发的首选语言。

机器学习工作包

(1) 数值计算库Numpy

Numpy (Numerical Python) 是Python语言的一个扩展程序库,支持高维数组和矩阵快速运算,并提供大量的数学函数库。Numpy诞生于2005年,由Travis Oliphant在Numeric程序库基础上结合程序库Numarray的特点,并加入其他扩展开发而来。Numpy内置了并行运算功能,在某些计算时可以利用系统多核进行自动并行计算。其底层使用C语言编写,数组中直接存储对象,而不是存储对象指针,因此其运算效率远高于纯Python代码。

(2) 数据分析和处理库Pandas

Pandas的名称来自于面板数据(Panel Data)和数据分析(Data Analysis),是基于Numpy的Python数据分析工具包,于2009年年底开源发布。Pandas最初被作为金融数据分析工具而开发,因此可很好地支持时间序列分析。Pandas集成了很多底层库和一些标准的数据模型,提供了大量快速便捷处理数据的函数和方法,从而可以高效地操作大型数据集。

(3) 科学计算库Scipy

Scipy是基于Numpy的科学计算库,其所包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算等,支持很多高阶抽象和物理模型,被广泛应用于数学、科学、工程学等领域。 Scipy自2004年开始聚焦科学计算,随着2005年Numpy的出现,Scipy底层处理转为Numpy实现。

(4) 数据可视化库Matplotlib

Matplotlib是一个画图工具,于2007年发布,支持创建静态动画及交互。它是强大的Python可视化画图工具,可以生成出版质量级别的图形,如绘制线图、散点图、等高线图、条形图、柱状图、3D图形和图形动画等,支持各种硬拷贝格式和跨平台的交互式环境。Matplotlib本身是一个Python2D绘图库,附带了支持3D绘图的附加工具包Mplot3d。

(5) 机器学习工具包Sklearn

Sklearn(scikit-learn)是一个基于Numpy、Scipy和Matplotlib构建的机器学习工具包,最早始于2007年的谷歌编程之夏项目(Google Summer of Code Project),并于2010年公开发布。Sklearn集成了各种最先进的机器学习算法,用于中等规模的有监督和无监督问题。它提供了包括分类、回归任务等有监督学习的各种模型,如线性模型、支撑向量机、贝叶斯模型、决策树、集成学习、半监督学习、神经网络等,以及无监督学习的各种模型,如高斯混合模型、流形学习、聚类、协方差估计、新颖性和异常值检测、密度估计等。除此之外,Sklearn还提供了相关类库,如模型选择和评估、检验、可视化、数据集转换和预处理、模型持久化等。
Sklearn简单易用,针对所有的算法提供了一致的接口调用规则,甚至只需要修改几行代码就可以对不同的算法模型进行实验。因此,Sklearn更适合面向机器学习入门者或非专业人士。

深度学习框架

(1)Theano

Theano诞生于2007年,被认为是深度学习框架的鼻祖。其设计初衷是执行深度学习大规模神经网络算法的运算。2016年后,Theano全面支持nVIDIA专门针对深度神经网络的基础操作而设计的基于GPU的加速库cuDNN。由于Theano主要面向学术研究,比较适合实验室的小规模的短期实验不太适合当前业界的需求。随着同时面向工业界和学术界的各种深度学习框架的诞生和发展,Theano基本完成了其使命,目前不再更新。

(2) Caffe

2012年12月,深度学习框架Caffe由伯克利人工智能研究小组和伯克视觉和学习中发布。Caffe应用于学术研究项目、初创原型,甚至视觉、语音和多媒体领域的大规模工业应用。雅虎还将Caffe与Apache Spark集成在一起创建了一分布式深度学习框架CaffeOnSpark。2017年4月,FaceBook发布Caffe2,加人了递归神经网络等新功能。2018年3月,Cafe并入PyTorch。

(3)谷歌深度学习框架TensorFlow

TensorFlow是当今深度学习领域最流行的框架之一,2015年由谷歌(Google)推出。TensorFlow拥有完整的数据流向与处理机制同时还封装了大量高效可用的算法及神经网络搭建方面的函数,因此主要用于进行机器学习与深度神经网络研究。

(4)微软深度学习框架CNTK

2016年1月,微软公司正式开源了由微软研究院开发的计算网络工具集CNTK。CNTK同样支持CPU和GPU模式和TensorFlow一样把神经网络描述成一个计算图的结构叶子节点代表输人或者网络参数,其他节点代表计算步骤。
CNTK支持各种神经网络模型,使用简单的配置文件即可配置特定网络,具有较强的可扩展性。CNTK支持CPU和GPU,支持CUDA编程,可自动计算所需的导数。

(5)Keras

Keras发布于2015年,是一个用Python编写的高级神经网络API。它将TensorFlow、CNTK或Theano作为后端。Keras的开发目的是支持快速的实验算法,能够以最小的时延把设计的模型转换为实验结果。由于它具有用户友好、高度模块化、可扩展等特点,可以进行简单而快速的原型设计。同时,Keras支持卷积神经网络和循环神经网络,以及两者的组合可以在CPU和GPU上无缝运行。

(6)亚马逊深度学习框架MXNet

MXNet 提供 Numpy 类编程接口,Numpy 用户可以轻松地采用 MXNet 开始深度学习。同时具有灵活的编程模型,支持命令式和符号式编程模型以最大化效率和性能。MXNet 具有良好的可移植性,可运行于多 CPU、多 GPU、集群、服务器、工作站甚至移动智能设备,同时支持多种主流编程语言,包括 Python、Java、C++、R、Scala、Clojure、Go、JavaScript、Perl 和 Julia 等。

(7) FaceBook 深度学习框架 PyTorch

PyTorch是一个高效、易用、灵活的动态计算图框架,在2017年由Facebook的FAIR团队发布到GitHub上。它支持实时变量查看和前向传播的自定义修改,让用户专注于实现自己的想法,而不用过多关注框架的限制。PyTorch在灵活性、易用性和性能方面表现突出,设计追求最小化的封装,避免代码重复。它的速度表现也优越,在同样的算法下能够达到最快的性能。

(8) 百度深度学习框架飞浆

百度在2018年7月开源了深度学习框架飞浆(PaddlePaddle),它是中国首个技术领先、功能完备的产业级深度学习平台,拥有易用、快速、模型丰富等优点。飞浆的模型库更新速度非常快,几乎覆盖了各行业各种主流算法模型。

(9) 清华大学深度学习框架 Jittor

Jittor是清华大学发布的深度学习框架,于2020年3月开源。它基于动态编译,使用元算子和统一计算图,可以实现复杂高效的操作。统一计算图融合了静态和动态计算图的优点,在易用性和性能上表现良好。基于元算子开发的模型可以实时自动优化并在指定硬件上运行。Jittor所有代码都是即时编译并运行,用户可以随时修改并动态运行。

(10) 华为 MindSpore 框架

华为于2018年发布了全场景AI解决方案,并推出了基于异构基础软硬件平台的华为MindSpore框架,包括异构处理器、Atlas系列硬件、异构计算构建器CANN、AI框架MindSpore和AI应用使能ModelArts平台等。MindSpore是华为新一代全场景AI计算框架,于2019年8月推出,2020年3月开源。MindSpore是一种适用于端边云场景的新型开源深度学习训练和推理框架,为华为研发的Ascend AI处理器提供原生支持,并进行了软硬件协同优化。

(11) 腾讯深度学习框架 TNN

2020年6月,腾讯优图实验室推出了移动端高性能轻量级推理框架TNN。该框架具有跨平台、高性能、模型压缩和代码裁剪等优势。TNN在原有的Rapidnet和NCNN框架的基础上进一步加强了对移动设备的支持和性能优化,同时借鉴了业界主流开源框架的高性能和良好拓展性。TNN通过ONNX(Open Neural Network Exchange,开放神经网络交换)支持TensorFlow、PyTorch、MXNet、Caffe等多种训练框架,并与不断完善的ONNX开源生态融合。ONNX是一个用于表示深度学习模型的标准,可实现模型在不同框架之间的转移。TNN设计了与平台无关的模型表示,并提供统一的模型描述文件和调用接口,支持主流的安卓、iOS等操作系统,适配CPU、GPU、NPU等硬件平台。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐