之前看到一篇报道,说CNTK最新版本已经支持作为Keras的后端选择之一,但需要单独装定制版的Keras,最近一直关注其动向,可喜的是其代码昨天终于合并到Keras里面了,Keras的作者也不禁赞到,这具有里程碑的意义。在Github上也能看到CNTK的人在加紧改代码争取尽快合并到Keras里面。
目前Python已经毋庸置疑,成为深度学习这个生态圈里面最重要的编程语言之一,Tensorflow、PyTorch、MxNet、CNTK等上层都支持Python,虽然底层大多数是由C++编写的。CNTK支持Keras此举,大概是看不下去Tensorflow独领风骚,想增加其在深度学习中用户数量。
CNTK是由微软开发的,一个很自然的想法是应该支持.Net/C#吧。在用Python之前,我基本上都是用C#的,对其很有好感。然并卵,去Github上面看了下,貌似CNTK并不支持用C#进行模型训练,只能用于部署(eval),难怪众人一致要求CNTK把.Net/C#作为一等公民对待。we are looking forward to see .NET/C# as a first class citizen with both eval and training API's
有网友感慨,17年在.Net/C#上的投入,在机器学习的时代都是白费了,这明显是从C#一出场就开始用的忠实粉啊。
虽然Github作为技术宅男聚集地,讨论一向和谐,但CNTK这样对待东家主推的.Net编程语言,终归是让众人不爽:
微软对待机器学习就像当年苹果对待地图一样,谷歌投入了6000人做地图而苹果用200人,苹果CEO困惑为啥苹果地图成了个笑话
有人发出来无声而有力的呐喊:如果未来属于Python,那么未来一定不属于微软。 "If the future is python then the future is not Microsoft"
为了让CNTK的人回心转意,大家也对免不了对Python开炮,Python脚本语言不好,不能用于生产环境,在Windows下经常各种问题以及生态系统分裂(Python2/3),表示拥护C#,严重希望CNTK也能把.Net作为一等公民对待。
有人一本正经的分析到微软这样做是一个不明智的选择,MS target wrongly,深度学习框架在Python领域已经是红海,而且Tensorflow已经占据榜首,目前有亚马逊上有4本Tensorflow相关的书籍以及众多教程(注:最近收集了五本Tensorflow英文书,有需要的可以在关注微信公众号后回复tensorflow,或者加我微信)。
与其与TF正面交锋,不如另辟蹊径。
Be a leader! Go where TF ignore!
We DO NOT want CNTK to be the SECOND BEST next to Tensorflow.
另外,这篇文章中的分析指出, 微软在10多年前就曾拥抱Python,在2006年开发了IronPython(这玩意儿应该很少有人用吧),2011年的PTVS。Python生态中有其自身的圈子,而这基本与微软无缘。这里没有SQL Server而是PostgreSQL;没有Microsoft Azure,而是亚马逊的AWS或者谷歌云。CNTK的存在对Python未来的机器学习生态系统而言毫无意义。未来是属于Tensorflow和几个非微软系的竞争者(注:并不是说Tensorflow在深度学习框架中没有有力的竞争者)。.Net才是CNTK的出路。
话说,连Tensorflow都没有放弃Windows和.Net(Tensorflow支持windows上编译成DLL,并有第三方TensorFlowSharp支持),CNTK有什么理由不好好对待.Net/C#呢。毕竟在微软Build大会上有一半的时间都在说机器学习ML,CNTK团队如果没有足够的人手做,那么微软就应该投入更多的资源和资金支持。
不过,有CNTK团队的人在Github上这样回应 we recommend people to switch to Python because nowadays most development is done in C++ and Python,这还能说啥。。。。。。