框架篇
Tensorflow(theano)
截至今日,tensorflow可以说已经胜出theano,具体的对比可以查阅资料,对于都是构建图计算的模型,tensorflow主要胜在资源丰富.
目前而言,裸写tensorflow也并非什么难事,可是鉴于我们只是想改动某些特性跑实验,并不想花大量时间写代码.特别是看到复用性很差的网络搭建时,总想自己写函数集成模块.然而并没有必要这么做,因为这个工作已经有很多了.
基本上,high level的api以tensorflow为back end有:
1.tensorflow自家的TF.slim,在0.11版本以后可用,提供了最新的框架的实现.不过并不是特别新手友好,而且没有说明文档,只有网页上有一页的说明.所以几乎还是在裸写tensorflow.
2.keras,后端可以选择是theano和tensorflow,如果是theano+keras转tensorflow的话可以无缝转过来.集成度非常高.人气高.更新速度快.
3.tflearn,后端只能是tensorflow,集成度非常高.人气较高.更新速度快.
4.tensorlayer,集成度中等,人气较低.更新速度一般.
我一项是认为选择一个同样功能的工具要看其人气,人气保证了作者不会弃更.
torch,MXnet,caffe
MXNet可以说是caffe的进化版,由于UCB维护caffe的人已经几乎不再,FB在努力开发caffe2.0,除了一些很有继承性的工作(例如RCNN)在caffe发展外,MXNet应当是更好的一个选择。MXnet相比tensorflow占用显存更小,训练速度更快,可是对于高度自定义的情况,往往需要用户打开C文件去修改后源码编译,而tensorflow的相关操作几乎都可以在python API中完成,毕竟两者定位不同,tf在做的是ML的通用工具包,而MX是一个深度学习导向的工具包。一句话总结tf牺牲效率换取了灵活性,适合中等玩家使用,mx等操作简单但是高度自定义困难,适合新手和高手。我个人倾向于在学习与研究阶段使用tensorflow,调试起来更容易,而竞赛或者追求务实之时选择MXNet/caffe。
至于torch没有使用过不予置评,pytorch最近出了,抽空真的想去比一下torch和tensorflow的灵活性跟速度。
CNTK
可以说是MS和VS爱好者的福音.在windows和vs2015下就可以使用,不用考虑什么源码编译,不用搞麻烦的乌版图.虽然会被诟病码农用什么windows,可是用的顺手就行了,管谁说什么呢.