这三个库主要比的是API设计水平,不得不说原始的 Tensorflow API的确反人类,我承认它的完善、表达能力强,性能好,但是接口设计对人类非常不友好。
这就给了做高层抽象API封装的生存空间,Keras Tensorlayer TFLearn 是目前比较成熟的几个库。
做个比喻,Tensorflow就像当年的 Win32 API,功能强大但是难以使用,随便做点小事情就要写很多代码,我清楚记得我写个显示空白窗口的程序就要40来行。
Tensorlayer比较像 WTL,把一些繁琐的代码封装成更容易使用的接口,但是仍然保留了对底层API调用的能力,抽象的层次不高,仍然可以看到底层的 数据结构和网络结构。比如 可以看到 Session和Placeholder等。
TFLearn比较像 MFC,抽象的层次更高,创造了自己的一套子语法,代码可读性更好,屏蔽了底层难以理解的东西。
Keras比较像 Qt,很高的抽象层次,甚至跨越了多个深度学习框架,完全看不到底层的细节了,甚至某些情况需要触碰底层的对象和数据反而非常麻烦。
不同的抽象层次带来不同的学习难度,适应不同的需求。
基本建议:
如果只是想玩玩深度学习,想快速上手 -- Keras
如果工作中需要解决内部问题,想快速见效果 -- TFLearn 或者 Tensorlayer
如果正式发布的产品和业务,自己设计网络模型,需要持续开发和维护 -- Tensorlayer
以上只是个人建议,具体情况因人而异。