Scikit MLPClassifier 与 Tensorflow DNNClassifier

数据挖掘 神经网络 scikit-学习 张量流
2022-03-01 17:22:18

我正在尝试了解 Scikit MLPClassifier 和 Tensorflow DNNClassifier 用于分类任务的区别,并希望一些专家可以分享一下。据我了解,两者都支持反向传播、激活函数(inc.relu)、优化器(sgd/adam)。MLPClassifier 还可以通过指定隐藏层和节点的数量来拥有深度神经网络。我可以看到两者之间的唯一区别是 DNNClassifier 支持 GPU 训练,而 MLPClassifer 不支持。除了 GPU 支持之外,它们之间还有其他区别吗?为什么要使用 Tensorflow 的 DNNClassifier 进行基本的深度神经网络训练(我在这里说的是基本的 feed-forard NN,而不是 CNN、RNN、LSTM 等)而不是 Scikit 的 MLPClassifier?

谢谢!

2个回答

也许你想使用更复杂的激活函数——即leakyReLU 或者你想添加批量标准化。从 API 的简要介绍来看,SKlearn 中没有 batchnorm 选项。此外,您似乎不能将 dropout 与 MLPClassifier 一起使用。

您可能还会对 tensorflow 功能(即 tensorboard)感到更自在,或者您可能会对 SKlearn 感到更自在。各有各的。

MLPClassifier 和 DNNClassifier 都是最简单的前馈神经网络的实现。所以原则上,它们是相同的。

TensorFlow 是一个深度学习库。scikit-learn 是一个更传统的机器学习库。

scikit-learn 对深度学习的覆盖范围非常有限,只有 MLPClassifier 和 MLPregressor,它们是基础知识。scikit-learn 的开发人员专注于更传统的机器学习领域,并做出了慎重的选择,不向深度学习领域扩展太多。

另一方面,Tensorflow 致力于深度学习。你可以用它组成非常复杂的深度学习模型。GPU 支持在深度学习中非常重要,我们确实需要 1000 倍的速度才能在深度学习中完成任何有意义的工作。

您可以使用 MLPClassifier 来处理玩具数据,但仅此而已。话虽如此,scikit-learn 源代码和文档非常容易访问。这对学习来说是惊人的。如果您刚开始学习深度学习,我强烈建议您阅读 MLPClassifier 源代码。