前言
本人现在还是一个初识深度学习的小白。初学者总是会面临选择的纠结,尤其是对看似高深的深度学习,有着众多开源框架可供选择,但自己又没有能力评估。于是我看了许多比较文章,其中涉及各种层面的比较(数据结构、使用范围、实现细节),让姿势水平还远远不够的我看得眼花缭乱。
作为一个数据玩家,我想到,不妨让它们在大数据的战场上一较高下。这样我们就能够很轻松地从清晰的数据中作出我们的选择了。
参赛选手
以下是参赛的选手们,是我了解的python上的一些著名深度学习框架:
● Google支持的tensorflow
● Facebook支持的pytorch
● 高层封装,简单易用的Keras
● 微软加持的CNTK
● 亚马逊选择的mxnet
● 百度打造的PaddlePaddle
● 最老牌的Theano
比赛规则
数据来自Github上这些框架的repo。上面Star数等数据,虽然不是框架好坏的直接反应,但肯定体现了潮流。跟着潮流走总不会有大错,就算学艺不精,总还能和别人谈笑风生。
然而star是一个累计量,还不能完全反映这些框架的近期热门度。这时,我们可以找到"Insight"栏目中的"Pulse"界面。正如它形象的名字(脉搏),其中有着一些能够反应其近期活跃度的数据,以tensorflow为例:
其中Active PRs可以反映近期开发者的活跃度,而Active Issues可以反映近期的使用者的活跃度(用的人越多问题总会越多吗)。
同样,让我们再为老态龙钟的Theano“把把脉”:
尽管Theano因为历史原因累计了不少star,但是因为已经官宣停更,近期很少有活动,奄奄一息。因此,它已经在我们的比赛中提前出局。
综上,我为剩下的选手指定了这些“比赛规则”:
● 名声:直接用Star来衡量
● 流行度:直接用Active Issues来衡量
● 开发活力:反映框架完善提升的潜力。用Active PRs / Star来衡量。除以Star的原因是考虑到项目越大,做的开发工作肯定会更多,所以要做一个修正。
● 使用活力:反映框架的相对其规模的流行度,较大的话也许可以期待用户数的继续增长。用Active Issues / Star来衡量。
比赛结果
01
名声
Tensorflow一骑绝尘,好用的keras也有不少簇拥,接着是pytorch等其他框架。
02
流行度
此处tensorflow依然是老大,但pytorch后来居上,接近能和tensorflow分庭抗礼了。这也与我近期的观感接近,近期开源的许多强大的NLP模型都提供了基于pytorch的实现,相信也带动了其热度。剩下keras,mxnet,paddlepaddle的流行度差不多,但还有一位CNTK,流行度与以上完全不在一个数量级上,这是要凉的节奏吗?我不能猜测具体原因。
03
活力
在这个指标下,百度的PaddlePaddle表现亮眼,虽然有分母(star)较少的因素,但是其很高的开发活跃度还是会让人期待其未来的发展,pytorch和mxnet也是同理,特别是pytorch使用活跃度极高,相信与近期基于其上的许多开源项目吸引了许多用户不无关系。tensorflow和keras的用户基数比较大,也相对成熟,活力较低。CNTK在此处依然凉凉……
总结
本文不作为专业的建议,但希望能对跟我一样选择困难的深度学习小白提供一些帮助,比如我现在就对pytorch很感兴趣了。不知道大家心中最好的框架又是什么呢?
我也做了一个以上图表的每日更新面板: http://blmoistawinde.pythonanywhere.com/DL_pop
也许框架的更新,会让大牛们现在的基于技术的优劣分析不再适用,但我相信实时的潮流总会有一定的参考价值。曾经深度学习是TF的一家独大,现在PyTorch大有异军突起之势。或许我们可以时时看看这些框架们的战局,虽然还只是个吃瓜群众,但我很期待看看一年后深度学习框架的潮流又会如何呢?
关于技术:
● 爬虫-requests
● 可视化-echarts
● 网站-Flask