文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
1 AI 框架概述
1.1 AI 库(python)
表格 1 python 常用 AI 库列表
类别 | 库名 | 介绍 |
---|---|---|
数据分析 | scipy | 提供矩阵支持,以及矩阵相关的数值计算模块 |
numpy | 数学函数库,提供数组、一组与线性代数相关的函数以及傅里叶变换函数。 | |
pandas | a powerful data analysis and manipulation library for Python | |
机器学习 | 提供机器学习、深度学习和强化学习。通常包括了分类、聚类、回归问题。 | |
sklearn | sckit-Learn。强大的机器学习库,支持回归、分类、聚类和降维。源码库里包含文档和例子(各语言含 jupyter notebook)。 | |
keras | 深度学习库,用于建立神经网络以及深度学习模型。windows 下速度会变慢。依赖库有 numpy/scipy/theano。 | |
xgboost | 约 100MB。 | |
libsvm | 机器学习库,SVM | |
统计学习 | statsModels | 统计建模和计量经济学 |
深度学习 | tensorflow | 谷歌基于 DistBelief 进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。 |
caffe | ||
线性规划 | ortools | google 开源。 |
逻辑编程 | kanren | 简化业务逻辑编写代码的方式。 |
SymPy | 轻量级的代数计算库。常用于逻辑编程,解决素数、数独等问题。 | |
可视化 | pillow, matplotlib, seaborn, wordcloud 等,详见 《 数据可视化工具.md 》 | |
tensorboard | tensorflow 框架的可视化工具包。 |
备注:机器学习的第三方模块中 scipy、numpy、matplotlib 是基础模块,pandas 等库通常要依赖上述库。
1.2 AI 库分领域
1.1.1 科学计算常用库的方法
表格 2 pandas 库方法(依赖于 numpy)
功能 | 主要方法 | 备注 |
---|---|---|
统计特征 | sum、mean var std corr cov skew kurt describe | 统计学基础 |
拓展统计 | cumsum cumprod cummax cmumin rolling_sum rolling_xxx | 累积统计 |
统计作图 | plot pie hist boxplot plot(logy=True) plot(yerr=error) | 饼图、拆线图、直方图、箱形图、对数图、误差条形图 |
数据预处理 | unique isnull notnull |
安装: pip install pandas
import numpy as np
import pandas as pd
表格 4 其它科学计算库用途
函数名 | 函数功能 | 库名 |
---|---|---|
interpolate | 数据插值 | scipy |
random | 生成随机矩阵 | numpy |
1.1.2 NLP.自然语言处理
处理人类语言问题的库。
库名 | 简述 |
---|---|
NLTK | 编写 Python 程序来处理人类语言数据的最好平台。支持多种语言。 |
gensim | 用来作文本主题挖掘的库 |
jieba | python 实现的一个中文分词开源模块。 |
Hanlp | Java 实现的 NLP 库。 |
FudanNLP | 复旦大学的 NLP 平台。 |
分词相关库:jieba mmseg
- Pattern – Python 的网络挖掘模块。他有自然语言处理工具,机器学习以及其它。
- TextBlob – 为深入自然语言处理任务提供了一致的 API。是基于 NLTK 以及 Pattern 的巨人之肩上发展的。
- SnowNLP – 中文文本处理库。
- loso – 另一个中文分词库。
- genius – 基于条件随机域的中文分词。
- langid.py – 独立的语言识别系统。
- Korean – 一个韩文形态库。
- pymorphy2 – 俄语形态分析器(词性标注+词形变化引擎)。
- PyPLN – 用 Python 编写的分布式自然语言处理通道。这个项目的目标是创建一种简单的方法使用 NLTK 通过网络接口处理大语言库。
1.1.3 CV.计算机视觉
表格 5 计算机视觉常用库
库名 | 简介 |
---|---|
opencv | 1999 年由 Intel 建立。基于 BSD 许可发行的跨平台计算机视觉库,可以运行在 Linux 、 Windows 和[Mac OS]( https://baike.baidu.com/item/Mac OS) 操作系统上。开源计算机视觉库。 |
SimpleCV | 用于照相机、图像处理、特征提取、格式转换的简介,可读性强的接口(基于 OpenCV)。 |
mahotas | 快速计算机图像处理算法(完全使用 C++ 实现),完全基于 numpy 的数组作为它的数据类型。 |
1.3 AI 主流引擎/框架
表格 6 AI 主流引擎/框架比较(深度学习)
比较项 | Caffe | Torch/PyTorch | Theano/lasagne | TensorFlow | MXNet |
---|---|---|---|---|---|
主语言 | C++/cuda | C++/Lua/cuda | Python/c++/cuda | Python/C++/cuda | C++/cuda |
从语言 | Python/Matlab | Python | - | Python/R/Julia/Go | |
硬件 | CPU/GPU | CPU/GPU/FPGA | CPU/GPU | CPU/GPU/Mobile | CPU/GPU/Mobile |
分布式 | N | N | N | Y | Y |
速度 | 快 | 快 | 中等 | 中等 | 快 |
灵活性 | 一般 | 好 | 好 | 好 | 好 |
文档 | 全面 | 全面 | 中等 | 全面 | 全面 |
适合模型 | CNN | CNN/RNN | CNN/RNN | CNN/RNN/... | CNN/RNN/... |
命令式 | N | Y | N | N | Y |
声明式 | Y | N | Y | Y | Y |
接口 | protobuf | Lua | Python | C++/Python | Python/R/Julia/Go |
网络结构 | 分层方法 | 分层方法 | 符号张量图 | 符号张量图 | ? |
可视化 | tensorboard | ||||
厂商 | BAIR | 学术界 | Amazon | ||
发布/开源时间 | 2013.9 | 2017.1 | 2007 | 2015.11 | 2015.5 |
备注:CUDA(Compute Unified Device Architecture),是显卡厂商 NVIDIA 推出的运算平台。
- 主语言和从语言:主语言是原版开发语言(底层实现语言),从语言是基于原版用别的编程语言开发并开源(如 PyTorch 是在 Torch 基础上用 python 语言重新打造的一款深度学习框架。而 Torch 初版是用 Lua 语言实现的,比较小众,影响力较弱。PyTorch 的影响力已超过 Torch)。
- 编程方法有命令式和声明式编程。
- 命令式是直接告诉机器怎么做 HOW,这个容易理解,机器完全机械执行命令。程序员也很容易控制处理的过程。
- 声明式是告诉机器 WHAT,让机器去 HOW,1)如 SQL 语句是典型声明式,写了一个 SQL 语句,然后 SQL 引擎自己去优化 SQL 操作。2)如 D3.JS 画图也是声明式。3)函数工具如 map, reduce 就是典型的声明式编程得到的函数工具。声明式编程让我们专注于软件本身 WHAT,回归需求本质。
- 操作系统:操作系统原先 tensorflow/pytorch 早期版本都不支持 windows,只支持 linux/osx,但 2018 年陆续都支持了,因此此比较项删除。
- 2018 年,Keras 作者被 google 收编。2019.1,Tensorflow 2.0 发布。
- Theano 在深度学习框架中是祖师级的存在。它的开发始于 2007,早期开发者包括传奇人物 Yoshua Bengio 和 Ian Goodfellow。**Theano 像是一个研究平台多过是一个深度学习库。你需要从底层开始做许多工作,来创建你需要的模型。创始者之一的 Ian Goodfellow 放弃 Theano 转去谷歌开发 Tensorflow。**2014.9,Lasagen 封装了 theano,使得 theano 使用起来更简单。。
- Mxnet: Mxnet 是由李沐等人领导开发的非常灵活,扩展性很强的框架,被 Amazon 定为官方框架。特点:Mxnet 同时拥有命令式编程和符号式编程的特点。在 命令式编程上 MXNet 提供张量运算,进行模型的迭代训练和更新中的控制逻辑;在声明式编程中 MXNet 支持符号表达式,用来描述神经网络,并利用系统提 供的自动求导来训练模型。Mxnet 性能非常高,推荐资源不够的同学使用。
如何学习开源框架
要掌握好一个开源框架,通常需要做到以下几点:
(1) 熟练掌握不同任务数据的准备和使用。
(2) 熟练掌握模型的定义。
(3) 熟练掌握训练过程和结果的可视化。
(4) 熟练掌握训练方法和测试方法。
一个框架,官方都会开放有若干的案例,最常见的案例就是以 MNISI 数据接口+预训练模型的形式,供大家快速获得结果。
进阶从自定义数据读取接口,自定义网络的搭建,模型的训练,模型的可视化,模型的测试与部署等全方位进行掌握。
本章参考
[1]. Pandas 中文教程 https://www.w3cschool.cn/hyspo/
[2]. 12 大深度学习开源框架(caffe,tf,pytorch,mxnet 等) 快速入门项目 https://www.jianshu.com/p/16f69668ce25
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论