Python深度学习框架汇总

Python深度学习框架汇总

012852

Python 可谓是人工智能的第一语言,这不仅因为它有着众多支持深度学习的框架,还有许多优秀的深度学习框架,这些框架使得深度学习的训练任务的变得简单,程序开发者不在忧虑复杂的环境配置,本文我们就来简单地了解一下 Python 中优秀的深度学习框架。

俗话说:“工欲善其事,必先利其器”。在了解了深度学习及其发展简史后,我们来挑选一下深度学习要使用的工具吧。

Theano

Theano 是最早的深度学习框架之一,由 Yoshua Bengio 和 Ian Goodfellow 等人开发,是一个基于 Python 语言、定位底层运算的计算库,Theano 同时支持 GPU 和 CPU 运算。

但由于 Theano 开发效率较低,模型编译时间较长,同时开发人员转投 TensorFlow 等原因,Theano 目前已经停止维护。

Scikit-learn

Scikit-learn 是一个完整的面向机器学习算法的计算库,内建了常见的传统机器学习算法支持,文档和案例也较为丰富,但是 Scikit-learn 并不是专门面向神经网络而设计的,不支持 GPU 加速,对神经网络相关层实现也较欠缺。

Caffe

Caffe 由华人博士贾扬清在 2013 年开发,主要面向使用卷积神经网络的应用场合,并不适合其他类型的神经网络的应用。

Caffe 的主要开发语言是 C++,也提供 Python 语言等接口,支持 GPU 和 CPU。由于开发时间较早,在业界的知名度较高。

2017 年 Facebook 推出了 Caffe 的升级版本 Cafffe2,Caffe2 目前已经融入到 PyTorch 库中。

Torch

Torch 是一个非常优秀的科学计算库,基于较冷门的编程语言 Lua 开发。Torch 灵活性较高,容易实现自定义网络层,这也是 PyTorch 继承获得的优良基因。但是由于 Lua语言使用人群较小,Torch 一直未能获得主流应用。

MXNET

MXNET 由华人博士陈天奇和李沐等人开发,已经是亚马逊公司的官方深度学习框架。采用了命令式编程和符号式编程混合方式,灵活性高,运行速度快,文档和案例也较为丰富。

Pytorch

PyTorch 是 Facebook 基于原有的 Torch 框架推出的采用 Python 作为主要开发语言的深度学习框架。PyTorch 借鉴了 Chainer 的设计风格,采用命令式编程,使得搭建网络和调试网络非常方便。

尽管 PyTorch 在 2017 年才发布,但是由于精良紧凑的接口设计,PyTorch 在学术界获得了广泛好评。在 PyTorch 1.0 版本后,原来的 PyTorch 与 Caffe2 进行了合并,弥补了 PyTorch 在工业部署方面的不足。总的来说,PyTorch 是一个非常优秀的深度学习框架。

Kears

Keras 是一个基于 Theano 和 TensorFlow 等框架提供的底层运算而实现的高层框架,提供了大量方便快速训练,测试的高层接口,对于常见应用来说,使用 Keras 开发效率非常高。但是由于没有底层实现,需要对底层框架进行抽象,运行效率不高,灵活性一般。

TensorFlow

TensorFlow 是 Google 于 2015 年发布的深度学习框架,最初版本只支持符号式编程。得益于发布时间较早,以及 Google 在深度学习领域的影响力,TensorFlow 很快成为最流行的深度学习框架。但是由于 TensorFlow 接口设计频繁变动,功能设计重复冗余,符号式编程开发和调试非常困难等问题,TensorFlow 1.x 版本一度被业界诟病。

2019年,Google 推出 TensorFlow 2 正式版本,将以动态图优先模式运行,从而能够避免TensorFlow 1.x 版本的诸多缺陷,已获得业界的广泛认可。

目前来看,TensorFlow 和 PyTorch 框架是业界使用最为广泛的两个深度学习框架,TensorFlow 在工业界拥有完备的解决方案和用户基础,PyTorch 得益于其精简灵活的接口设计,可以快速设计调试网络模型,在学术界获得好评如潮。

TensorFlow 2 发布后,弥补了 TensorFlow 在上手难度方面的不足,使得用户可以既能轻松上手 TensorFlow 框架,又能无缝部署网络模型至工业系统。本书以 TensorFlow 2.0 版本作为主要框架,实战各种深度学习算法。

TensorFlow与Keras

我们这里特别介绍 TensorFlow 与 Keras 之间的联系与区别。Keras 可以理解为一套高层 API 的设计规范。

Keras 本身对这套规范有官方的实现,在 TensorFlow 中也实现了这套规范,称为 tf.keras 模块,并且 tf.keras 将作为 TensorFlow 2 版本的唯一高层接口,避免出现接口重复冗余的问题。如无特别说明,本书中 Keras 均指 tf.keras。

© 版权声明
THE END
喜欢就支持一下吧
点赞2赞赏
分享
评论 抢沙发
HarryPotter的头像|艾奇编程网

昵称

取消
昵称表情