在使用TensorFlow之前,早期主要有Theano、Keras、Caffe、Torch等这几个开源框架。
当时学术界应用较多的是Theano,同时Theano也是和TensorFlow最像的深度学习框架,可以说TensorFlow是它的一个升级版。它们都支持符号计算和自动求导,但在Theano里限制比较多,如它的编译速度特别慢,它的整个代码包括CUDA的代码,都是写在Python文件里,CUDA代码是以字符串的形式存在Python文件中,使用起来不是特别方便,同时运行速度也比较慢,这也限制了Theano在大规模的工业应用上的应用;
Keras当时是构建在Theano上的一个上层封装,现在他也支持构建在TensorFlow上,它是一个极简的深度学习框架,可能只用几行或者十几行就能实现一个非常复杂的神经网络。当然,它的缺点也很明显,就是它的底层当时是基于Theano,所以运行速度、功能会有一定限制,同时也不能支持多GPU或者分布式;
Caffe当时应该是最火的开源框架,它主要是使用一个二进制文件,通过执行训练或者预测命令。而它的网络是通过写一个Protobuf格式的文件来定义的,所以它调试参数或者调试网络结构时不是很方便,但它的训练速度确是几个框架中最快的,而且针对卷积神经网络优化做的特别好。而缺点就是刚刚提到的,当要进行大量的实验时,不是特别方便,因为它的配置文件和它的二进制程序不太适合在Python中反复修改和调试;
关于Torch,这个是Facebook的开源框架,历史比较悠久,最开始是使用Lua语言编写,平时执行的效率非常高,可能会比Python高几十倍。但该框架的问题在于应用的语言比较小众,使用的人相对比较少,学习成本较高以及语言内部的配套组件相对较少等。而在Python中,有Pandas、NumPy、XGBoost、Scikit-learn等配套组件,应用起来特别方便。但Torch使用的Lua中就缺少这些东西,所以使用起来不是很方便,同时它框架本身跟Keras比较像,Keras借鉴了Torch,在定义网络的时非常简洁。但如果从来没有使用过Python或者没有使用过Keras的人,尝试一下这个框架也是可以的,最近Torch也推出了Python的版本叫PyTorch,从某些角度上解决了它语言本身的问题。