Torch是一个开源的机器学习库,一个科学的计算框架和一个基于Lua编程语言的脚本语言。它为深度机器学习提供了广泛的算法,并使用脚本语言LuaJIT。Torch的底层是由C实现。Torch运行在LuaJIT上,与C++、C#以及Java等工业语言相比速度非常快,用户可编写任意类型的计算而不需要担心性能,但Lua并非主流语言。
目前使用Torch的公司和机构有Facebook AI Research group, IBM, Yandex以及Idiap Research,Deepmind在未被Google收购前也使用Torch。Torch已经被扩展用于Android和iOS。
Torch属于非符号架构。
Torch中有大量强化学习,神经风格迁移,对抗生成网络,自然语言处理相关代码。
优点:很多容易结合的模块碎片
易于编写自己的层类型和在 GPU 上运行
Lua(大部分库代码是 Lua 语言,易于读取,运行速度快于Python)
大量的预训练模型
有丰富的 RNN 教程和预构建模型
缺点:总是需要编写自己的训练代码(更不能即插即用)
没有商业化支持
糟糕的文档支持
官网链接:http://torch.ch/
Caffe主要由伯克利视觉与学习中心开发,其将 Matlab 的快速卷积网接口迁移到了 C 和 C++ 中。Caffe 不面向其他深度学习应用,比如文本、声音或时序数据。如同其他框架一样,Caffe 选择 Python 作为 API。Caffe 的文档非常贫乏。你需要花大量时间检查代码才能理解它。Caffe 的最大缺点之一是它的
Caffe属于非符号框架。
优点:在前馈网络和图像处理上较好
在微调已有网络上较好
不写任何代码就可训练模型
Python 接口相当有用
缺点:需要为新的 GPU 层编写 C++/CUDA
不擅长循环网络
面对大型网络有点吃力(GoogLeNet,ResNet)
不可扩展
无商业化支持
安装复杂,需要解决大量的依赖包
官网链接:http://caffe.berkeleyvision.org/
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。
TensorFlow是符号构架。开发块但执行慢。
优点:Python+Numpy
计算图抽象,如同 Theano
比 Theano 更快的编译速度
进行可视化的 TensorBoard
数据和模型并行
缺点:
比其它框架慢
比 Torch 更「臃肿」;更神奇;
计算图是纯 Python 的,因此更慢
需要退出到 Python 才能加载每个新的训练 batch
不能进行太大的调整
在大型软件项目上,动态键入易出错
官网链接:https://www.tensorflow.org/
PyTorch(http://pytorch.org/)
PyTorch是使用GPU和CPU优化的深度学习张量库。它提供了两种高层面的功能:使用强大的 GPU 加速的 Tensor 计算(类似 numpy);构建于基于 tape 的 autograd 系统的深度神经网络。
优点:编程语言Python
自动求导
缺点:刚出现,现有代码少
官网链接:http://pytorch.org/
深度学习各框架对比:https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software