VR的

无人区 · markjyx · 于 3年前 发布 · 1341 次阅读

在过去的一年里,咱们讨论了六个开源机器学习和/或深度学习框架:Caffe,Microsoft Cognitive Toolkit(又名CNTK 2),MXNet,Scikit-learn,Spark MLlib和TensorFlow。如果把网撒得大些,可能还会覆盖其他几个流行的框架,包括Theano(一个10年之久的Python深度学习和机器学习框架),Keras(一个Theano和TensorFlow深度学习的前端),DeepLearning4j(Java和Scala在Hadoop和Spark之上的深度学习软件)。如果你有兴趣使用机器学习和神经网络,你从来没有像现在这样多的选择。

机器学习框架和深度学习框架之间有区别。本质上,机器学习框架涵盖用于分类,回归,聚类,异常检测和数据准备的各种学习方法,并且其可以或可以不包括神经网络方法。深度学习或深度神经网络(DNN)框架涵盖具有许多隐藏层的各种神经网络拓扑。这些层包括模式识别的多步骤过程。网络中的层越多,可以提取用于聚类和分类的特征越复杂。

Caffe,CNTK,DeepLearning4j,Keras,MXNet和TensorFlow是深度学习框架。 Scikit-learning和Spark MLlib是机器学习框架。 Theano跨越了这两个类别。

一般来说,深层神经网络计算在GPU(特别是Nvidia CUDA通用GPU,大多数框架)上运行的速度要比CPU快一个数量级。一般来说,更简单的机器学习方法不需要GPU的加速。

虽然你可以在一个或多个CPU上训练DNN,训练往往是缓慢的,慢慢我不是说秒或分钟。需要训练的神经元和层数越多,可用于训练的数据越多,需要的时间就越长。当Google Brain小组在2016年针对新版Google翻译训练语言翻译模型时,他们在多个GPU上同时运行了一周的训练时间。没有GPU,每个模型训练实验将需要几个月。

这些框架中每一个框架具有至少一个显著特征。 Caffe的强项是用于图像识别的卷积DNN。 Cognitive Toolkit有一个单独的评估库,用于部署在ASP.Net网站上工作的预测模型。 MXNet具有良好的可扩展性,可用于多GPU和多机器配置的训练。 Scikit-learn具有广泛的强大的机器学习方法,易学已用。 Spark MLlib与Hadoop集成,具有良好的机器学习可伸缩性。 TensorFlow为其网络图TensorBoard提供了一个独特的诊断工具。

另一方面,所有深度学习框架在GPU上的训练速度几乎相同。这是因为训练内循环在Nvidia CuDNN包中花费大部分时间。然而,每个框架采用一种不同的方法来描述神经网络,具有两个主要的阵营:使用图形描述文件的阵营,以及通过执行代码来创建它们的描述的阵营。

考虑到这一点,让我们来看看每一个框架的特性。

Caffe(咖啡)

Caffe深度学习项目,最初是一个强大的图像分类框架,似乎停滞不前,基于它的持续的bug,以及它已被卡住1.0版RC3一年多的事实,并且创始人已离开项目。它仍然有良好的卷积网络图像识别和良好的支持Nvidia CUDA GPU,以及一个简单的网络描述格式。另一方面,它的模型通常需要大量的GPU内存(超过1GB)运行,它的文档是多斑点和问题,支持很难获得,安装是iffy,特别是对于它的Python笔记本支持。

Caffe有命令行,Python和Matlab接口,它依靠ProtoText文件来定义它的模型和求解器。 Caffe在其自己的模型模式中逐层定义网络。网络定义从输入数据到丢失的整个模型。当数据和派生数据在前向和后向遍历网络时,Caffe存储,通信和操作信息为blob(二进制大对象),内部是以C连续方式存储的N维数组(表示行该数组被存储在连续的存储器块中,如在C语言中)。 Blob之于Caffe如Tensor之于TensorFlow。

图层对blob执行操作,并构成Caffe模型的组件。层卷积滤波器,执行池,取内部乘积,应用非线性(诸如整流线性和S形以及其他元素方面的变换),归一化,加载数据和计算诸如softmax和铰链的损失。

Caffe已经证明其在图像分类中的有效性,但它的时刻似乎已经过去了。除非现有的Caffe模型符合您的需要,或者可以根据您的目的进行微调,我建议使用TensorFlow,MXNet或CNTK。

共收到 1 条回复 社区新功能
markjyx#13年前 0 个赞

asdsadsad

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册