深度学习入门遇到的term
常见框架
TensorFlow
编程接口支持Python和C++。随着1.0版本的公布,Java、Go、R和Haskell API的alpha版本也被支持。此外,TensorFlow还可在Google Cloud和AWS中运行。TensorFlow还支持 Windows 7、Windows 10和Windows Server 2016。由于TensorFlow使用C++ Eigen库,所以库可在ARM架构上编译和优化。这也就意味着用户可以在各种服务器和移动设备上部署自己的训练模型,无须执行单独的模型解码器或者加载Python解释器。
但,其系统设计复杂、底层运行机制难以学习;接口快速迭代且没有很好地考虑向后兼容性,导致许多开源代码已经无法在新版的TensorFlow上运行;创造了图、会话、命名空间、PlaceHolder等诸多抽象概念,同一个功能提供了多种实现但良莠不齐。
Keras
Keras是一个高层神经网络API,由纯Python编写而成,并使用TensorFlow、Theano及CNTK作为后端。Keras为支持快速实验而生,能够把想法迅速转换为结果。Keras应该是深度学习框架之中最容易上手的一个,它提供了一致而简洁的API, 能够极大地减少一般应用下用户的工作量,避免用户重复造轮子。严格意义上讲,Keras并不能称为一个深度学习框架,它更像一个深度学习接口,它构建于第三方框架之上。
Keras的缺点很明显:过度封装导致丧失灵活性;过度封装也使得Keras的程序过于缓慢,许多BUG都隐藏于封装之中,在绝大多数场景下,Keras是本文介绍的所有框架中最慢的一个;在使用Keras的大多数时间里,用户主要是在调用接口,很难真正学习到深度学习的内容。
Caffe/Caffe2
Caffe的全称是Convolutional Architecture for Fast Feature Embedding,它是一个清晰、高效的深度学习框架,核心语言是C++,它支持命令行、Python和MATLAB接口,既可以在CPU上运行,也可以在GPU上运行。
Caffe简洁快速但缺少灵活性。不同于Keras的缺少灵活性,在Caffe中最主要的抽象对象是层,每实现一个新的层,必须要利用C++实现它的前向传播和反向传播代码,而如果想要新层运行在GPU上,还需要同时利用CUDA实现这一层的前向传播和反向传播,还有诸多问题(包括灵活性缺失、扩展难、依赖众多环境难以配置、应用局限等)。尽管现在在GitHub上还能找到许多基于Caffe的项目,但是新的项目已经越来越少。
Caffe2沿袭了大量的Caffe设计,可解决多年来在 Caffe 的使用和部署中发现的瓶颈问题。Caffe2的设计追求轻量级、扩展性、高性能、便携性。其 Python 和 C++ API 使用户可以轻松地在 Linux、Windows、iOS、Android ,甚至 Raspberry Pi 和 NVIDIA Tegra 上进行原型设计、训练和部署。Caffe2继承了Caffe