技术成就梦想

代码如诗

原 Keras的优缺点 qinhui99

2017年9月11日 未分类 0

参加过几个机器学习和深度学习的比赛后,对Keras有更深刻的认识。作为一个深度学习工具,Keras是我见过的最易用的工具了。

优点:

1、API简单,易用。

2、文档齐全,并且文档内容组织地很好。从简单到复杂,一步步的指引。

3、扩展性好。后端支持Tensorflow, theano,mxnet,cntk.  而且自定义层也比较好写。

4、使用人群分布很广。深度学习的初学者喜欢用,制造技术’轮子’的主力人群(博士和研究生)也喜欢用。这点很重要。因为我注意到,当一个新的技术出来的时候,往往你很快就能找到相关的Keras例子。你很容易找到使用Keras的同道进行交流。

缺点:

1、速度慢。后端如果使用mxnet或cntk,速度会快些;如果使用Tensorflow或theano,速度很慢。而且Keras本身是一个中间层,通过它调用Tensorflow或theano,会比单独使用Tensorflow或theano要慢。

2、程序占用GPU内存比较多。我以前从来没遇到过,模型加一层Dropout或者BatchNormalization就会导致GPU内存溢出。但最近用Keras训练一个大尺寸的U-NET模型的时候,就频繁遇到了GPU内存溢出问题。此外,想要使用Keras的PRelu激活层,那你得准备更多的GPU内存才行。究其原因,可能是Keras的层,为了扩展性好,大多数是用Python实现的。在性能和内存管理方面缺乏效率。

有鉴于此,我准备慢慢转到mxnet和pytorch上.