Theano诞生于2008的,由蒙特利尔大学Lisa Lab团队开发维护,因出现时间早,可以算是这类库的始祖之一。核心是一个数学表达式的编译器,专为处理大规模神经网络训练设计。
主要优势:
1)集成NumPy,可以直接使用NumPy和ndarray,API接口学习成本低
2)计算稳定性好,如可以精准计算输出值很小的函数(像log(1+x))
3)动态的生成C或CUDA代码,用以编译成高效机器代码
Theano是完全基于Python(C++/CUDA代码也是打包为Python字符串)的符号计算库。
创始人是加州大学伯克利的Ph.D.贾扬清,同时是TensorFlow作者之一。
Caffe主要优点:
1)容易上手,网络结构是以配置文件形式定义,不需要代码设计风格
2)训练速度快,能训练state-of-the-art的模型与大规模数据
3)组件模块化,可方便拓展到新的模型和学习任务上
Caffe核心概念是Layer,每一个神经网络的模块都是一个Layer,Layer接收输入数据,同时经内部计算产出数据。设计网络时,只要把各个Layer通过编写protobuf配置文件定义拼接在一起组成完整网络。实现新的Layer时,需要将正向和反向两种计算过程的函数都实现,这部分需要用户自已写C++或者CUDA代码,对普通用户来说比较难上手。Caffe最开始设计时只针对图像,所以他对卷积神经网络支持的非常好。
Torch自已定位是LuaJIT上的高效科学计算库,优先GPU,上层使用lua语言作为网络设计语言,底层C++.
Torch的nn库支持神经网络,自编码器,线性回归,卷积网络,循环神经网络等 ,同时支持定制的损失函数及梯度计算。 Torch也是基于Layer的连接来定义网络, Torch属于命令式编程模式。