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


我认为Keras唯一的问题是它不支持多GPU环境中并行地训练网络 。这可能会也可能不会成为你的大忌 。
如果我想尽快地训练网络 , 那么我可能会使用mxnet 。但是如果我需要调整超参数,我就会用Keras设置四个独立的实验(分别在我的Titan X GPUs上运行)并评估结果 。
mxnet
我第二喜欢的深度学习Python库无疑就是mxnet(重点也是训练图像分类网络) 。虽然在mxnet中站立一个网络可能需要较多的代码,但它会提供给你惊人数量的语言绑定(C ++、Python、R、JavaScript等) 。
Mxnet库真正出色的是分布式计算 , 它支持在多个CPU / GPU机训练你的网络,甚至可以在AWS、Azure以及YARN集群 。
它确实需要更多的代码来设立一个实验并在mxnet上运行(与Keras相比) , 但如果你需要跨多个GPU或系统分配训练,我推荐mxnet 。
sklearn-theano
有时候你并不需要终端到终端的培养一个卷积神经网络 。相反,你需要把CNN看作一个特征提取器 。当你没有足够的数据来从头培养一个完整的CNN时它就会变得特别有用 。仅仅需要把你的输入图像放入流行的预先训练架构,如OverFeat、AlexNet、VGGNet或GoogLeNet , 然后从FC层提取特征(或任何您要使用的层) 。
总之,这就是sklearn-theano的功能所在 。你不能用它从头到尾的训练一个模型 , 但它的神奇之处就是可以把网络作为特征提取器 。当需要评估一个特定的问题是否适合使用深度学习来解决时,我倾向于使用这个库作为我的第一手判断 。
nolearn
我在PyImageSearch博客上用过几次nolearn,主要是在我的MacBook Pro上进行一些初步的GPU实验和在Amazon EC2 GPU实例中进行深度学习 。
Keras把 Theano和TensorFlow包装成了更具人性化的API,而nolearn也为Lasagne做了相同的事 。此外,nolearn中所有的代码都是与scikit-learn兼容的,这对我来说绝对是个超级的福利 。
我个人不使用nolearn做卷积神经网络(CNNs),但你当然也可以用(我更喜欢用Keras和mxnet来做CNNs) 。我主要用nolearn来制作Deep Belief Networks (DBNs) 。
DIGITS
DIGITS并不是一个真正的深度学习库(虽然它是用Python写的) 。DIGITS(深度学习GPU培训系统)实际上是用于培训Caffe深度学习模式的web应用程序(虽然我认为你可以破解源代码然后使用Caffe以外其他的后端进行工作 , 但这听起来就像一场噩梦) 。
如果你曾经用过Caffe,那么你就会知道通过它的终端来定义.prototxt文件、生成图像数据、运行网络并监管你的网络训练是相当繁琐的 。DIGITS旨在通过让你在浏览器中执行这些任务来解决这个问题 。
此外,DIGITS的用户界面非常出色,它可以为你提供有价值的统计数据和图表作为你的模型训练 。另外,你可以通过各种输入轻松地可视化网络中的激活层 。最后,如果您想测试一个特定的图像,您可以把图片上传到你的DIGITS服务器或进入图片的URL,然后你的Caffe模型将会自动分类图像并把结果显示在浏览器中 。干净利落!
Blocks
说实话,虽然我一直想尝试,但截至目前我的确从来没用过Blocks(这也是我把它包括在这个列表里的原因) 。就像许多个在这个列表中的其他库一样,Blocks建立在Theano之上,呈现出一个用户友好型的API 。
deepy
如果让你猜deepy是围绕哪个库建立的,你会猜什么?
没错 , 就是Theano 。
我记得在前一段时间用过deepy(做了初始提交) , 但在接下里的大概6-8个月我都没有碰它了 。我打算在接下来的博客文章里再尝试一下 。
pylearn2
虽然我从没有主动地使用pylearn2,但由于历史原因,我觉得很有必要把它包括在这个列表里 。Pylearn2不仅仅是一般的机器学习库(地位类似于scikit-learn) , 也包含了深度学习算法的实现 。

推荐阅读