当前位置: 首页 > news >正文

深度学习四大框架之争(Tensorflow、Pytorch、Keras和Paddle)

近几年,随着深度学习指数级发展,深度学习的框架使用在人工智能领域也起着举足轻重的作用,这其中包括Tensoflow、Pytorch、Keras、paddle等等。

那么面对这些框架,究竟使用哪个呢?

其实,这几个框架都有各自的优点和缺点,大家了解后可以根据自己的情况进行选择;现在Keras API都融入tensorflow2.0进去了,因此学tensorflow就行,而paddle是百度推出的,且资料很资源最多,百度也开源了许多优秀的模型,值得推荐。(个人推荐tf、torch、paddle)



1、Tensoflow



TensorFlow由Google智能机器研究部门研发;TensorFlow编程接口支持Python和C++。随着1.0版本的公布,相继支持了Java、Go、R和Haskell API的alpha版本。2.0版本又把Keras的相关API都嵌入到tf中,使得其功能更加强大。但由于版本变动过大,因此1.0版本的代码在2.0版本好多都报错,造成版本升级迭代困难。

在2017年,Tensorflow独占鳌头,处于深度学习框架的领先地位;但截至目前已经和Pytorch不争上下,甚至略输入Pytorch。

Tensorflow目前主要在工业级领域处于领先地位。

tensorflow学习教程:https://github.com/aymericdamien/TensorFlow-Examples


2、Pytorch



Pytorch目前是由Facebook人工智能学院提供支持服务的。

Pytorch目前主要在学术研究方向领域处于领先地位,许多学术论文都是用pytorch编写的,因此使用范围更广。

其优点在于:PyTorch可以使用强大的GPU加速的Tensor计算(比如:Numpy的使用)以及可以构建带有autograd的深度神经网络。

同时,PyTorch 的代码很简洁、易于使用、支持计算过程中的动态图而且内存使用很高效,版本之间差异也不大,没有升级方面的困难。

Pytorch学习教程:在本公众号菜单栏->AI必备框架学习tab



3、Keras



Keras是基于Tensorflow用纯python编写的深度学习框架,也就是说它是在Tensorflow的基础上再次集成的;所以,他的代码会更加简洁方便,适于初学者;但因为它是在Tensorflow的框架上再次封装的,那么运行速度肯定就没有Tensorflow快了。

其主要优点在于:

用户友好

Keras可以说是专为人类的API;Keras遵循减少认知困难的最佳实践:Keras提供一致而简洁的API, 能够极大减少一般应用下用户的工作量。

易扩展性

添加新的网络层等是非常容易的,只需要仿照现有的模块编写新的类或函数,然后使用model.add()即可。创建新模块的便利性使得Keras更适合于先进的研究工作。

keras学习教程:在本公众号菜单栏->AI必备框架学习tab



4、Paddle



飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件于一体,是中国首个自主研发、功能完备、开源开放的产业级深度学习平台。国内的可以优先选择paddlepaddle,这是因为百度在大力推广该框架,能提供丰富的算力支持和技术支持,且百度开源了众多模型和应用,是人工智能入门的一个好选择,且能在模型上面进行一系列魔改,强烈推荐!

学习教程及模型库连接:https://gitee.com/paddlepaddle

https://www.paddlepaddle.org.cn/

综上所述:

Tensorflow更倾向于工业应用领域,适合深度学习和人工智能领域的开发者进行使用,具有强大的移植性。
Pytorch更倾向于科研领域,语法相对简便,利用动态图计算,开发周期通常会比Tensorflow短一些。
Keras因为是在Tensorflow的基础上再次封装的,所以运行速度肯定是没有Tensorflow快的;但其代码更容易理解,容易上手,用户友好性较强。
PaddlePaddle学术和工业上都可以应用,且有丰富的资料代码库可以参考,代码也较好上手。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 鸿蒙笔记--Socket
  • 数据结构(邓俊辉)学习笔记】词典 02—— 散列函数
  • 用python实现求两个整数的最大公约数
  • vue 开发工具 Hbuilder 简介及应用
  • Python教程(十二):面向对象高级编程详解
  • haproxy的安装和服务信息
  • 管好“黄金数据”,浪潮海岳助力企业释放主数据潜能
  • LVS集群中的负载均衡技术
  • springboot怎么使用Redisson
  • C#表达式编程指南: 执行表达式、解释表达式、生成表达式,翻译表达式的详解与示例
  • 【5G NAS】全球唯一临时标识符GUTI介绍
  • 准确率、召回率、f1指标计算的区别
  • MySQL:约束
  • 二十九、MongoDB(1)
  • 万界星空科技QMS系统:全面升级企业质量管理的利器
  • php的引用
  • Android优雅地处理按钮重复点击
  • ERLANG 网工修炼笔记 ---- UDP
  • input实现文字超出省略号功能
  • React-flux杂记
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • yii2中session跨域名的问题
  • 百度小程序遇到的问题
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 讲清楚之javascript作用域
  • 聊聊directory traversal attack
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 如何合理的规划jvm性能调优
  • 深入浏览器事件循环的本质
  • 使用Gradle第一次构建Java程序
  • 事件委托的小应用
  • 【干货分享】dos命令大全
  • !$boo在php中什么意思,php前戏
  • #if #elif #endif
  • (06)金属布线——为半导体注入生命的连接
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (二)linux使用docker容器运行mysql
  • (二)测试工具
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (转)3D模板阴影原理
  • (转)为C# Windows服务添加安装程序
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .Family_物联网
  • .htaccess配置重写url引擎
  • .NET 8 跨平台高性能边缘采集网关
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core Swagger 过滤部分Api
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net操作Excel出错解决
  • .NET序列化 serializable,反序列化
  • .NET中的十进制浮点类型,徐汇区网站设计