不同主流深度学习框架对比
近几年,随着深度学习指数级发展,深度学习的框架使用在人工智能领域也起着举足轻重的作用,这其中包括Tensoflow、Pytorch、Keras、Caffe等等
那么面对这些框架,究竟使用哪个呢?
答:其实,这几个框架都有各自的优点,大家了解后可以根据自己的情况进行选择;下面我们就来看看吧!!(本文纯属是唠唠嗑的,想直接知道自己适合使用哪种框架的,可以直接滑倒文末看结论 )
Tensoflow
TensorFlow由Google智能机器研究部门Google Brain团队研发的;TensorFlow编程接口支持Python和C++。随着1.0版本的公布,相继支持了Java、Go、R和Haskell API的alpha版本。
在2017年,Tensorflow独占鳌头,处于深度学习框架的领先地位;但截至目前已经和Pytorch不争上下。
Tensorflow目前主要在工业级领域处于领先地位。
Pytorch
Pytorch目前是由Facebook人工智能学院提供支持服务的。
Pytorch目前主要在学术研究方向领域处于领先地位。
其优点在于:PyTorch可以使用强大的GPU加速的Tensor计算(比如:Numpy的使用)以及可以构建带有autograd的深度神经网络。
同时,PyTorch 的代码很简洁、易于使用、支持计算过程中的动态图而且内存使用很高效。
PyTorch vs TensorFlow总结
- TensorFlow 和 PyTorch 实现显示出相同的准确性。但是,TensorFlow 的训练时间要长得多,但内存使用量要低一些。
- PyTorch 允许比 TensorFlow 更快的原型设计,但如果神经网络中需要自定义功能,TensorFlow 可能是更好的选择。
- TensorFlow 将神经网络视为静态对象;如果你想改变你的模型的行为,你必须从头开始。使用 PyTorch,可以在运行时动态调整神经网络,从而更容易优化模型。
- 开发人员的调试。使用 TensorFlow 进行有效调试需要一个特殊的调试器工具,该工具使您能够检查网络节点在每个步骤中是如何进行计算的。可以使用许多广泛可用的 Python 调试工具之一来调试 PyTorch。
- PyTorch 和 TensorFlow 都提供了加速模型开发和减少样板代码量的方法。然而,PyTorch 和 TensorFlow 的核心区别在于 PyTorch 更加“pythonic”并且基于面向对象的方法。同时,TensorFlow 提供了更多可供选择的选项,因此总体上具有更高的灵活性。
Keras
Keras是基于Tensorflow用纯python编写的深度学习框架,也就是说它是在Tensorflow的基础上再次集成的;所以,他的代码会更加简洁方便,适于初学者;但因为它是在Tensorflow的框架上再次封装的,那么运行速度肯定就没有Tensorflow快了。
其主要优点在于:
用户友好。Keras可以说是专为人类的API;Keras遵循减少认知困难的最佳实践:Keras提供一致而简洁的API, 能够极大减少一般应用下用户的工作量。所以,当Pytorc和Tensoflow的框架代码看不懂的时候,试试Keras也是未尝不可的。
易扩展性。添加新的网络层等是非常容易的,只需要仿照现有的模块编写新的类或函数,然后使用model.add()即可。创建新模块的便利性使得Keras更适合于先进的研究工作。
综上
- Tensorflow更倾向于工业应用领域,适合深度学习和人工智能领域的开发者进行使用,具有强大的移植性。
- Pytorch更倾向于科研领域,语法相对简便,利用动态图计算,开发周期通常会比Tensorflow短一些。
- Keras因为是在Tensorflow的基础上再次封装的,所以运行速度肯定是没有Tensorflow快的;但其代码更容易理解,容易上手,用户友好性较强。
目前Keras框架已经被集成到Tensorflow里了,在TensorFlow 2.0及其之后的版本中,Keras已经成为TensorFlow的默认高级API,使得用户可以更加方便地使用Keras构建、训练和评估深度学习模型。