python函数学习深度 python入门函数( 三 )


虽然我很喜欢Caffe的性能(它每天可以在K40 GPU上处理60万张图片) , 但相比之下我更喜欢Keras和mxnet 。
主要的原因是,在.prototxt文件内部构建架构可能会变得相当乏味和无聊 。更重要的是,Caffe不能用编程方式调整超参数!由于这两个原因,在基于Python的API中我倾向于对允许我实现终端到终端联播网的库倾斜(包括交叉验证和调整超参数) 。
Theano
在最开始我想说Theano是美丽的 。如果没有Theano,我们根本不会达到现有的深度学习库的数量(特别是在Python) 。同样的,如果没有numpy,我们就不会有SciPy、scikit-learn和 scikit-image,,同样可以说是关于Theano和深度学习更高级别的抽象 。
非常核心的是,Theano是一个Python库,用来定义、优化和评估涉及多维数组的数学表达式 。Theano通过与numpy的紧密集成,透明地使用GPU来完成这些工作 。
虽然可以利用Theano建立深度学习网络,但我倾向于认为Theano是神经网络的基石,同样的numpy是作为科学计算的基石 。事实上,大多数我在文章中提到的库都是围绕着Theano,使自己变得更加便利 。
不要误会我的意思,我爱Theano,我只是不喜欢用Theano编写代码 。
在Theano建设卷积神经网络就像只用本机Python中的numpy写一个定制的支持向量机(SVM),当然这个对比并不是很完美 。
你可以做到吗?
当然可以 。
它值得花费您的时间和精力吗?
嗯 , 也许吧 。这取决于你是否想摆脱低级别或你的应用是否需要 。
就个人而言,我宁愿使用像Keras这样的库,它把Theano包装成更有人性化的API,同样的方式,scikit-learn使机器学习算法工作变得更加容易 。
TensorFlow
与Theano类似,TensorFlow是使用数据流图进行数值计算的开源库(这是所有神经网络固有的特征) 。最初由谷歌的机器智能研究机构内的Google Brain Team研究人员开发,此后库一直开源 , 并提供给公众 。
相比于Theano  , TensorFlow的主要优点是分布式计算,特别是在多GPU的环境中(虽然这是Theano正在攻克的项目) 。
除了用TensorFlow而不是Theano替换Keras后端,对于TensorFlow库我并没有太多的经验 。然而在接下来的几个月里,我希望这有所改变 。
Lasagne
Lasagne是Theano中用于构建和训练网络的轻量级库 。这里的关键词是轻量级的 , 也就意味着它不是一个像Keras一样围绕着Theano的重包装的库 。虽然这会导致你的代码更加繁琐,但它会把你从各种限制中解脱出来 , 同时还可以让您根据Theano进行模块化的构建 。
简而言之:Lasagne的功能是Theano的低级编程和Keras的高级抽象之间的一个折中 。
我最喜欢的:
Keras
如果我必须选出一个最喜欢的深度学习Python库,我将很难在Keras和mxnet中做出抉择——但最后,我想我会选Keras 。
说真的,Keras的好处我说都说不完 。
Keras是一个最低限度的、模块化的神经网络库,可以使用Theano或TensorFlow作为后端 。Keras最主要的用户体验是,从构思到产生结果将会是一个非常迅速的过程 。
在Keras中架构网络设计是十分轻松自然的 。它包括一些state-of-the-art中针对优化(Adam , RMSProp)、标准化(BatchNorm)和激活层(PReLU,ELU,LeakyReLU)最新的算法 。
Keras也非常注重卷积神经网络,这也是我十分需要的 。无论它是有意还是无意的,我觉得从计算机视觉的角度来看这是非常有价值的 。
更重要的是,你既可以轻松地构建基于序列的网络(其中输入线性流经网络)又可以创建基于图形的网络(输入可以“跳过”某些层直接和后面对接) 。这使得创建像GoogLeNet和SqueezeNet这样复杂的网络结构变得容易得多 。

推荐阅读