尝尝PyTorch。
简洁
如果用汽车型号来类比各个机器学习框架的话,那么我会有如下的观点。这个世界上,观点并不重要,重要的是事实,当笑话看看即可。
- TensorFlow是保时捷
稳定,有面子,有底蕴,开很远开很久都可以。打开引擎盖,里面相对比较复杂但又有序可靠。一年得去保养一两次。
- PyTorch是特斯拉
设计简洁。试驾和市区开开不错,跑西藏可能有点困难。保养就是个形式。
- MxNet是啥
客观讲,没看到多少人正儿八经开。试驾的不少。开的也有一些。和小众电动车或混动车类似。要么为了车牌,要么家里是厂里的。
- PaddlePaddle是国产混动车
还可以,便宜实惠。但是最好服务商做成解决方案。比如我以滴滴乘客的身份去使用,而不是自己去开。
买哪种车呢?各有各的好处。如果是冬令营这种突击短期比赛,就好比赛车场搞个业余爱好者竞赛,简洁高效的自然受欢迎。
公司文化
如《定位》等营销书籍所叙,人们的心智在一个品类中只能容纳2-3个品牌。大部分人的眼里只有TensorFlow和PyTorch。我不由地想到了React和Angular等产品。两者的文化决定了产品风格。具体不多说,细品。
好的2D产品有什么特质
什么是好的面向开发者(2D)的产品?
- 简洁
- 文档齐全
- 示例丰富
- 社区资源多
- 功能强大,性能强大
- 稳定
简洁应该是所有因素的核心。
- 因为简洁,API即文档。
- 因为简洁,初级参与者才会多,才会有下一步。
- 因为简洁,才能稳定和性能强大。
唯一和简洁冲突的,大概就是“功能强大”。这也是PyTorch的少有的劣势:production serving。不知TouchScript后续走向如何。至于分布式训练,设备端部署等,我觉得这都不是民用车辆的功能,多台车(可以是一个品牌)才是合理的选择。
XnorNet和CycleNet
回归主题,PyTorch到底哪里好?
我不知道。
不过,我很快找到了XnorNet和CycleNet的开源实现,借助别人的工作,我快速改了改,就跑起来了。GPU和CPU占用基本满格,毫无浪费。加深了对论文的理解并能有些小粒度创新。代码角度,简洁,清晰。看API能感受到这是真的懂这个领域的人设计的。看外围功能,比如dataset,dataloader,transform等,嗯,这是民用车该有的样子。
知耻而后勇,期待G的各个勇士们在后续车型研发上能够有所改进。