为什么用TensorFlow
常用深度学习框架•深度学习框架
•TensorFlow
•PyTorch
•Keras
•MXNet
•Torch
•Caffe
•Theano
•Deeplearning4j
•BigDL
主要接口语言
•Python
•TensorFlow、PyTorch、Keras、MXNet、Theano、BigDL •C++
•Caffe
•Java/Scala
•Deeplearning4j
•BigDL
•MXNet
•Lua
•Torch
框架现状
•目前主流框架:
•TensorFlow
•PyTorch
•Keras
•MXNet
•Caffe: Caffe的使用主要是编写配置文件,如果需要自定义操作需要用C++写扩展层。
对于科研来说,框架的灵活性较弱。
但对于开发来说,在桌面程序中嵌入Caffe较为方便。
•历史主流框架:
•Torch: 由于Lua科学计算生态圈较弱,现用Torch人较少,而用PyTorch的人较多。
•Theano: 已停止维护
•冷门框架:
•Deeplearning4j
•BigDL
为什么用TensorFlow
•主流框架:
•需要大量使用现有的库,例如对于视觉任务,经常需要使用预训练的几百层的神经网络,自己实现的开发和计算成本太高。
因此需要使用具有较多轮子的主流框架。
•过滤结果:TensorFlow、PyTorch、Keras、MXNet、Caffe
•Python接口:
•科研场景需要强大的科学计算生态圈支撑,如灵活的矩阵运算库、易用的数据可视化工具,因此具有Python接口的深度学习框架具有相对的优势。
Java、Lua等语言在这方面相对薄弱。
•过滤结果:TensorFlow、PyTorch、Keras、MXNet
•可扩展性:
•主要依据框架的抽象程度。
Keras其实是在TensorFlow等框架上做的一个封装,提供了易用的接口,但由于接口较为高层,因此深度定制较难。
•过滤结果:TensorFlow、PyTorch、MXNet
•健全的文档:
•MXNet在文档上较为欠缺
•过滤结果:TensorFlow、PyTorch
•官方支持:
•TensorFlow官方提供了很多高层框架,如TensorFlow Slim(包含多种常用网络)、Tensorflow Serving、TensorFlow Lite。
相对而言,PyTorch官方提供的资源相对较弱。
•过滤结果:TensorFlow
总结
•TensorFlow是Google开发的用Python API编写,通过C/C++引擎加速的深度学习框架。
具有很多优点:
•✓具备不局限于深度学习的多种用途,还有支持强化学习和其他算法的工具;
•✓跨平台运行能力强;
•✓支持自动求导;
•✓同时支持动态图和静态图;
•✓支持多GPU并行和多机并行(分布式);
•✓官方支持好;
•✓社区提供的组件多;
•✓第三方资料多;。