工欲善其事,必先利其器
你想选哪个? 如何选?先来介绍下,也许有帮助。。。
介绍下几个名词:
卷积神经网络(Convolutional Neural Network,CNN)
CNN是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,且该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,对于大型图像处理有出色表现。主要用来识别位移、缩放及其他形式扭曲不变性的二维图形,由于CNN的特征检测层是通过训练数据进行学习的,所以在使用CNN时,避免了显式的特征抽取,而是隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。
递归神经网络(Recurrent neural Network,RNN)
RNN神经网络是一种节点定向连接成环的人工神经网络。网络的内部状态可以展示动态时序行为。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。具有更强的动态行为和计算能力。
NumPy(Numeric Python)
一个用Python实现的科学计算包,是Python的一种开源数值计算扩展,包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。提供了许多高级的数值编程工具,可用来存储和处理大型矩阵,如矩阵数据类型、矢量处理、以及精密的运算库,是专为进行严格的数字处理而产生。基本可以认为NumPy将Python变成了一种免费的更强大的MatLab系统。
TensorFlow
用于数值计算的使用数据流图的开源软件库。
TensorFlow 是较低级别的符号库(比如 Theano)和较高级别的网络规范库(比如Blocks 和Lasagne)的混合。虽然它是Python 深度学习库集合的最新成员,不过在Google Brain 团队支持下,它已经是最大的活跃社区了。它支持在多GPUs 上运行深度学习模型,为高效的数据流水线提供使用程序,并具有用于模型的检查,可视化和序列化的内置模块。且TensorFlow支持 Keras(一个很优秀的深度学习库)。
优点:由软件巨头 Google支持,非常大的社区,低级和高级接口网络训练,比基于 Theano配置更快的模型编译,完全地多 GPU支持。
Keras
Python 的深度学习库。支持Convnets(基于GPU实现的卷积神经网络)、递归神经网络等。在Theano 或者TensorFlow 上运行。
Keras 也许是水平最高,对用户最友好的库了。由 Francis Chollet(Google Brain团队中的另一个成员)编写和维护。它允许用户选择其所构建的模型是在 Theano上或是在 TensorFlow上的符号图上执行。Keras的用户界面受启发于 Torch。由于部分非常优秀的文档和其相对易用性,Keras的社区非常大并且非常活跃。TensorFlow已经与 Keras一起支持内置,所以很快 Keras将是 TensorFlow项目的一个分组。
优点:可供选择的 Theano或者 TensorFlow后端,直观、高级别的端口,更易学习。
缺点:不太灵活。
Caffe
Caffe 起初并不是一个通用框架,而仅仅关注计算机视觉,但它具有非常好的通用性。
Caffe 具有很好的 CNN建模能力,但是 RNN资源就少很多,所以它更多的是面向图像识别、推荐引擎和自然语言识别等方向的应用,不面向其他深度学习应用诸如语音识别、时间序列预测、图像字幕和文本等其他需要处理顺序信息的任务。
优点:良好的CNN建模能力。
缺点:不够灵活,有限的参考文献/资源。
CNN 建模能力
卷积神经网络(CNN)经常被用于图像识别、推荐引擎和自然语言识别等方向的应用。CNN由一组多层的神经网络组成,在运行时会将输入的数据进行预定义分类的评分。CNN也可用于回归分析,例如构成自动驾驶汽车中有关转向角的模型。评价一种框架的 CNN建模能力考虑以下几个特性:定义模型的机会空间、预构建层的可用性、以及可用于连接这些层的工具和功能。其中Theano,Caffe和MXNet都有很好的 CNN建模能力。另外,TensorFlow因为易于建立的 Inception V3模型,PyTorch 因为其丰富的 CNN 资源(易于使用的时间卷积集)使得这两种框架在 CNN 建模能力上脱颖而出。
RNN 建模能力
循环神经网络(RNN)常用于语音识别,时间序列预测,图像字幕和其他需要处理顺序信息的任务。目前,Microsoft的 CNTK和 PyTorch 有着丰富的 RNN教程和预构建模型。另外,目前很流行的 TensorFlow中也有一些 RNN 资源,且Keras中更是有很多使用 TensorFlow的 RNN 示例。