来源:量子位
子豪 发自 凹非寺
量子位 报道 | 公众号 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/
(声明:本文仅代表作者观点,不代表新浪网立场。)