子豪 发自 凹非寺
量子位 报道 | 公众号 QbitAI

Keras一直深受程序员的欢迎,就在几天前,MIT CSAIL刚帮它庆祝了6周岁生日。

然而,一转眼,reddit上却在为它举办礼”

一篇“Keras正在被谷歌杀死”的帖子,在reddit上引发热议。

6岁的Keras经历了什么?

Keras和TensorFlow渊源颇深

Keras最初由一位谷歌工程师开发,是一个开源高层深度学习API,其开发重点是支持快速实验。

由于Keras本身不具备底层运算能力,所以需要和具备底层运算能力的后端协同工作。

最初发行的时候,Keras支持以Theano、CNTK等作为后端,而那个时候TensorFlow还没有开源。

而用户对Keras的评价,正如reddit文章作者所说:

“Keras早在几年前就可用,而且API稳定,这是它巨大的优势……最初的Keras只是一个机器学习的高级API规范,与缺少工程背景的人合作时,这点非常好。”

TensorFlow则是谷歌公司开发的开源软件库,用于各种感知和语言理解任务的机器学习,具有很强的功能性。

2015年11月,谷歌将TensorFlow0.1开源,而后逐渐稳定,并发展出强大的用户群,成为深度学习框架的NO.1。

于是从Keras v1.1.0开始,TensorFlow成为Keras的默认后端,二者的用户量也产生关联。

不过,TensorFlow逐渐由于API稳定性不足、静态计算图编程复杂等缺陷,遇到了发展瓶颈。

与此同时,PyTorch的动态图开发模式,以及更加便捷的编程方式,不断吸引TF的用户转换阵营。

这迫使谷歌作出改变,考虑到Keras简单易用,还拥有强大的用户基础,于是谷歌将它集成进TensorFlow2.0,成为了tf.keras。

本应是个皆大欢喜的结果,却出现了不少质疑声。作者就表示:TF2延续了TF1的缺点,而Keras的优势正慢慢消失

“谷歌将其并入TensorFlow2,这本身没有问题,但Keras正在被慢慢“杀死。”

之所以产生这样的观点,他给出了3个理由

•   Keras API 在合并期间被 “冻结 ”,使得它的功能落后于其他替代品;

•   TF2的发布得太晚。最重要的是,第一版的bug很多,到现在仍缺乏一些基本功能;

•   谷歌把TF1的烂摊子搬到TF2,让框架变得极其臃肿。出现故障时,冗长而含糊的错误信息和大量的堆栈痕迹,会让人不知所措。

他强调自己一直使用原始Keras,对谷歌没有偏见,也不是在抱怨TensorFlow。但Keras和TF2的故事让他感到沮丧,因此将这篇文章作为Keras API的葬礼……

这篇略显伤感的文章引起了网友关注,一起看看其他人怎么说。

网友观点

这篇“送葬文”获得了400+点赞,不过从评论来看,只有少数网友表示同感。

“和愚人节无关,这完全表达了我对Keras和TF2的看法。”

大多数网友并不认同作者的看法,认为tf.keras比之前更胜一筹。

“完全不同意这种观点。

Keras API比以往任何时候都容易;拥有更多功能,可以轻松利用TF分布式培训;只需几行代码,就可以在数百个GPU上训练一个巨大的模型。如果是开发简单的模型,Keras比过去更简单,功能更强大。

虽然合并过程的确有点混乱……”

不少网友站在TF用户的角度,认为集成Keras是TF2的一大亮点。

“TF允许创建生产管道,采用多种策略进行分布式培训,而Keras只有能在多个GPU上训练模型这一个不错的功能……

对我这样的TF用户而言,集成Keras是件非常好的事。”

“我没看到Keras消失,谷歌怎么会杀死它呢?”

“我从2016年一直使用它,现在虽然存在问题,但是比直接用TF更好”

PyTorch在前,JAX在后

此贴一出,网友们必然要将各家框架比较一番。

虽然TF2.0将重心放在了简单性和易用性上,但在大多数人看来,PyTorch仍然更胜一筹:

“我们有更灵敏的PyTorch,有什么理由去用TensorFlow?”

“我认为Keras会被PyTorch取代。过去使用Keras和TensorFlow的大多数人以及一些用PyTorch的人,都正在转向JAX,它非常实用且快速。”

JAX由谷歌开发,其前身是Autograd(通过numpy和本机python代码进行梯度计算的库),作为TF的简化库。

网友评价JAX更像是TF和python的混合体,保证功能性的同时,仍然简洁易用。程序员们还为它开发了Haiku代码库,使用户能面向对象开发。

有人表示:“实际上,比Keras消失更糟的是,TF2杀死了TensorFlow。”

“TensorFlow从一开始就是一团糟,作为可微编程的易用工具,设计问题阻碍了其灵活性,主要是静态计算图。PyTorch的动态计算图效果更好,因此TF2试图赶超,但为时已晚。

JAX真的很不错,应该是未来的发展趋势。”

PyTorch带来的危机尚在,如今谷歌又大力开发JAX。也许在未来某天,JAX会成为谷歌的主要神经网络库。

此番境地,Keras未来真的会消失吗?

reddit链接:
https://www.reddit.com/r/MachineLearning/comments/mhrpbm/d_Keras_killed_by_google/

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

推荐阅读

专治“炼丹侠”各种不服:1分钟就能搞个AI应用

竞拍AI教父Hinton

有奖问卷 | 智能汽车哪家强

你怎么看智能汽车呢?一个三分钟问卷,让我们看看现在智能汽车有多大的影响力了~ 填完问卷有抽现金红包的机会哦,据说中奖率还蛮高的~( • ̀ω•́ )✧

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~

Keras将死于谷歌之手?reddit网友写“送葬文”,引发热议相关推荐

  1. 谷歌软件工程师是怎样写设计文档的?

  2. 研究型AI面经 | 来自一位Reddit网友谷歌面试经验分享

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 转载自量子位 大多数学生在求职前,都会经历实习的过程,那么面试就必不可少. Red ...

  3. 「GNN,简直太烂了」,一位Reddit网友的深度分析火了

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 图神经网络(GNN)这个概念近几年很火,确实如此. 然而今天,一位Reddit网友却"背道而驰"地提出了强烈反对观点.例 ...

  4. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 下边两张 ...

  5. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 1.10 ...

  6. 华为宣布鸿蒙系,这边华为宣布推出鸿蒙系杨百万中国时刻统,那边谷歌喊话华为,网友:尴尬症犯了...

    这边华为宣布推出鸿蒙系统,那边谷歌喊话华为,网友:尴尬症犯了 相信经常会关心时事新闻的人们一定都知杨百万中国时刻道谷歌已经和华为断绝合作了的这件事情了,而实际上对于我们广大的中国华为用户们来说,这次事 ...

  7. 计算机博士谷歌要吗,计算机博士指责谷歌科学欺诈 遭遇网友批驳

    昨天在韩国首尔进行的谷歌"阿尔法围棋"与人类代表 李世石的"人机大战"五番棋第2局较量,阿尔法执黑中盘完胜李世石,以2比0领先,李世石再度受到沉重打击,已输得没 ...

  8. ak47怎么得 rust_UZI直播一波操作火到国外,Reddit网友:这不是乌兹,这是AK47

    原标题:UZI直播一波操作火到国外,Reddit网友:这不是乌兹,这是AK47 距离英雄联盟冬季转会期结束仅剩下了几个小时,我们LPL赛区的队伍到现在为止还没有一个官宣大名单的,看来今年的规则确实有些 ...

  9. 微信打开时支持消息通知横幅引热议;​Google和甲骨文的云服务因英国高温天气而下线;谷歌发布开源开发语言Carbon|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

最新文章

  1. Python如何爬取实时变化的WebSocket数据
  2. 「3D视觉从入门到精通」知识星球
  3. Xcode下 gdb 调试命令
  4. P1955-[NOI2015]程序自动分析【并查集,离散化】
  5. nodejs 代替python_Python/NodeJS坑记
  6. 数据结构之查找算法:折半查找
  7. 我是一只 IT小小鸟
  8. 服务器硬盘检测工具有哪些,最常用的10大服务器管理工具
  9. 通用crt更新不适用计算机,Office2016安装提示需要通用补丁CRT(KB2999226)
  10. URL和URI(二)URI
  11. SaaS微信小程序电商系统,一键生成小程序【源码分享】
  12. 用c语言编写定时器程序,C语言怎么实现定时器
  13. ERROR in ./src/vue/login.vue?vuetype=templateid=28b333d2 2:0 Module parse failed: Unexpected toke
  14. 多Excel文件内容查询工具
  15. BadDet: Backdoor Attacks on Object Detection——面向目标检测的后门攻击
  16. PokemonGo完美度算法!是风姐还是松岛枫?--工地斗天地斗天马座
  17. android app 目标版本,android – 在gradle中使用目标sdk版本23时,ZBA...
  18. Altium Designer 的PCB中添加图片或logo的方法(附PCB Logo Creator插件)
  19. cpu的主频、外频和倍频
  20. FileIO - java

热门文章

  1. 如何显示jQuery中的加载微调器?
  2. 从脚本本身获取Bash脚本的源目录
  3. 如何实现一个元素居中
  4. mysql(五)查询缓存
  5. Android杂谈--layout的横竖屏处理
  6. 迁移到云端的企业数据需注意安全
  7. 《JavaScript模式》精要
  8. 三种提取 网卡的方法
  9. 【算法】9 散列表【待补充】
  10. ZABBIX安装官方指南