我正试图理解Scikit MLPClassifier和Tensorflow DNNClassifier在分类任务上的区别,并希望一些专家能够分享一些信息。据我所知,它们都支持反向传播、激活函数(包括relu)、optmizer (sgd/adam)。MLPClassifier还可以通过指定隐藏层和节点的#来建立深度神经网络。我看到的两种不同之处是,DNNClassifier支持GPU培训,而MLPClassifer不支持。除了GPU支持之外,它们之间还有其他区别吗?为什么要使用Tensorflow的DNNClassifier进行基本的深层神经网络训练(我这里说的是基本的神经网络,而不是CNN、RNN、LSTM等)。比Scikit的MLPClassifier更好吗?
谢谢!
发布于 2017-11-01 20:01:34
也许您想要使用更复杂的激活函数--即leakyReLU,或者要添加批处理规范化。简单地看一下API,SKlearn中没有批处理规范的选项。而且,您也不能在MLPClassifier中使用退出。
您也可能会对tensorflow特性感到更舒服--即张力板,或者您可能对SKlearn感到更舒服。每个人都有自己的。
发布于 2017-11-06 20:45:30
MLPClassifier和DNNClassifier都是最简单的前馈神经网络的实现。所以原则上,它们是一样的。
Tensorflow是一个深度学习图书馆。学习是一个更传统的机器学习图书馆。
对于深度学习,只有MLPClassifier和MLPregressor,这是基础知识的基础。科学的发展-学习集中在一个更传统的领域机器学习,并作出了一个深思熟虑的选择,不扩大太多深入学习领域。
另一方面,Tensorflow致力于深度学习。你可以用它构建非常复杂的深度学习模型。而GPU的支持对于深度学习来说是一个很大的问题,我们真的需要1000倍的速度来完成任何有意义的工作。
您可以使用MLPClassifier玩玩具数据,但仅此而已。尽管如此,scikit--学习源代码和文档是如此容易访问。这是令人惊奇的学习。如果您刚刚开始深入学习,我强烈建议您使用MLPClassifier源代码。
https://datascience.stackexchange.com/questions/24275
复制