机器学习框架与深度学习框架

之前一直用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对于可视化和理解您的数据流图非常有用。

posted @ 2018-11-02 11:22  simpleDi  阅读(1028)  评论(0编辑  收藏  举报