欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

lasagne,keras,pylearn2,nolearn深度学习库,到底哪家强?

程序员文章站 2022-05-02 14:07:42
...
最好有lasagne,keras,pylearn2,nolearn这几个的比较,张量和符号计算框架我已经选定使用theano了,上层的库用哪个好呢?
首先要文档尽可能详尽的,其次要架构清晰,继承和调用方便的。

回复内容:

基于Python的各个库个人最喜欢的是Keras,对于各种计算模式都有很好的wrapper,所以如果要实现一些标准模型很趁手。我和Francois聊过,他对Keras的定位很明确:Keras是一个类似API层的存在,后端引擎的计算和优化是和前端模型分开的,所以可以根据需要换不同的后端。

为什么后端可换是个好事?因为所有基于Theano的库都会有一个潜在的问题,就是编译时间很慢,Theano天生的。。。所以题主如果喜欢Python的话,不妨关注一下cgt:
Computation Graph Toolkit
实时编译很快,简单地说就是有Theano的功能,没有Theano的软肋。

最后容我恶搞一下,基于Python的library其实还有一个decaf,这个才叫比Pylearn2更加彻底的弃楼停止开发(逃 不知道哪家最强,只知道pylearn2最烂。曾经花了大概一个月的时间学过,简直噩梦,还好停止开发了。 首先,Pylearn2 也能位列其中...
题主大概是百度了一个几百年前的“经验帖”吧..

其次,题主问的是“用哪个库”。如果从“装逼性”来说 那必然单单上手Theao 自己开心编编DNN是坠吼的.. 但是这么回答真的很欠揍且学习曲线巨tm离谱...

然后呢,什么lasagne,keras,passage啊等一堆库 都是站在theano肩膀上的耶稣们而已... 他们极大地削弱了上手深度学习算法的难度.. 换句话说就是:傻瓜式调用。其实用哪个都差不多。

记得今年伦敦一场深度学习峰会 有好事者po过一张python library的阶级对比图(正在搜索原图中...)我清楚的记得lasagne是稳稳的第一名。从我目前接触的层面来看 lasagne确实以其严谨的构架逻辑 与 较强的可适性,甚至已经捕获了欧美一帮深度大牛的芳心。但是它方法命名与调用的各种用语习惯和专业术语跟我接触的流派不同... 所以我很不想接受... (简单的说就是 它的documentation与我本人气场不符~)

还有,我是个看脸的人... lasagne主页那套免费的模版..真是不忍直视...
于是当年的我果断选择了Keras~
至少他的主页搞了个风格主题~
多年的经验告诉我
颜值靠谱的公司 质量不会太差哦~

Keras的社区活跃程度和维护力度确实是让我有点感动的。基本上issue可以做到24h内完美解答...唯一问题是 keras的维护们灰常清高 经常是自以为是的回答一下就关了issue.. 然而他们其实也并没有解决问题... 还好用keras的孩子们都知道把open和close的issue都搜一圈... 要不然 真尼玛问个问题就被秒回一脸“傻d你这都不懂” 然后石沉大海。

当然最好的武器 还是你自己的“私人库”。毕竟你自己要做的项目有很多很多的定制化的东西 特别是keras本身还很初级。他们太注重“给傻瓜用”了,导致很多功能都很局限。你要是有些奇思妙想,比如给CNN搞个新的pipeline、给图片做完预处理再送入CNN等.. 他们现有的methods是解决不了的。

所以嘛,最好的解决方案 是去Github上fork他们,自己开个吊吊的branch,起个吊吊的名字,modify一些自己觉得惊为天人的新玩法。

结局也无怪乎
分分钟被人f*k了..
或者分分钟改变了世界..
对不~ 看github上的統計的貢獻者數量, issues跟星星等, 先去人多的地方, 用了不合適再換人少一點的, 我自己是用這方式選了keras
提一下pylearn2是失敗作, 主要開發者承認過度工程 bug全都一堆一堆 nolearn+Theano+lasagne 你在这提问的话我估计过一会mxnet吹就要来了 这问题就是递归,直至栈爆! pylearn2已经停止开发,就没关注过;如果主要为了使用定制好的模块,keras极其方便,上手容易,更新频率还不错,现在除了theano还支持tensorflow了,有问题可在keras-users或github提问;lasagne没用过,blocks可以直接从写好的computationgraph()调用theano.function,这样与theano写的代码结合使用挺方便的,而且还有attention的模块(我就是为了这个才看blocks的,我试着用keras写过,简直累死),不过它读取数据的模块fuel觉得挺复杂的,现在版本才更新到0.1.1,配置环境比keras要麻烦一些,仅供参考。另外推荐关注一下mxnet,粗略试过,显存占用率低,编译速度比theano快很多,不过想实现自定义功能相比于基于theano的会麻烦些 keras应该是最容易上手的深度学习框架,纯python的特性使得阅读和修改源代码都非常方便,毕竟python比C++不知道简单到哪里去了。文档也比较齐全,目前支持Theano+keras和Tensorflow+Keras。
打个小广告,建了个讨论keras和深度学习的群,欢迎加119427073,欢迎大神和小白