机器学习框架与深度学习框架
之前一直用java做软件开发,现在项目中需要做预测,然后入了机器学习的坑,现在还是入门小白。
因为之前一直用的java,所以打算用java的机器学习库——mahout。之后发现很多机器学习的资料都是基于python,一直纠结要不要转战python。
被各种机器学习框架和深度学习框架搞得眼花缭乱,现在写一点自己IDE理解。
包含的方法不同
机器学习框架(mahout、mlib、Scikit-learn):机器学习框架涵盖用于分类,回归,聚类,推荐、异常检测和数据准备的各种学习方法,并且可以不包括神经网络方法。
深度学习框架(TensorFlow、MXNet):深度学习或深度神经网络(DNN)框架包含具有许多隐藏层的各种神经网络拓扑算法。
运算环境不同
深层神经网络:计算在GPU(特别是Nvidia CUDA通用GPU,大多数框架)上运行的速度要比CPU快一个数量级。
一般来说,更简单的机器学习方法不需要GPU的加速。
解决的问题不同
- 应该使用哪种机器学习或深度学习包取决于机器学习的复杂性,用于训练的数据量和形式,计算资源以及您的编程语言偏好和技能。它也可能取决于是否喜欢使用代码或配置文件定义模型。
-
我建议喜欢Scala和在Hadoop中有他们数据的使用Spark MLlib ,喜欢Python的人Scikit-learn。
喜欢Scala(和Java)的人和在Hadoop中有他们数据的人的另一个选择是Deeplearning4j,它是一个学习深度包。
Microsoft Cognitive Toolkit,MXNet和TensorFlow的深度学习包的学习曲线比较陡峭。
Cognitive Toolkit现在有Python和C ++ API以及网络配置语言BrainScript。如果您喜欢使用配置文件而不是编程网络拓扑,那么CognitiveToolkit可能是一个不错的选择。另一方面,它似乎不像TensorFlow一样成熟,它不能在MacOS上运行。
MXNet支持Python、R、Scala、Julia和C ++,但其支持最好的API是用Python开发的。 MXNet在多个主机上的多个GPU上展示出良好的伸缩性(85%的线性)。
TensorFlow可能是三个包中最成熟的,只要你喜欢编写Python,并可以克服学习曲线。它具有细粒度的控制,但也需要编写大量的代码来描述一个神经网络。有三个简化的API与TensorFlow一起工作来解决这个问题:tf.contrib.learn,TF-Slim和Keras。另外TensorBoard对于可视化和理解您的数据流图非常有用。