理解多层感知器网络

我正在尝试理解如何训练多层感知器网络;然而,我在确定合适的网络架构时遇到了麻烦——即,如何决定网络中每层的节点/神经元数量。

对于一个特定任务,我有四个输入源,每个输入源可以输入三种状态中的一种。我猜这意味着有四个输入神经元可以输出0、1或2,但据我所知,输入应该保持二进制?

此外,我在选择隐藏层的神经元数量时也遇到了问题。任何评论都将不胜感激。

谢谢。


回答:

确定多层感知器的可接受网络结构实际上是直截了当的。

  1. 输入层:你的数据有多少特征/维度——即,每行数据有多少列。在此基础上加一(用于偏置节点),这就是第一层(输入层)的节点数量。

  2. 输出层:你的多层感知器是运行在“分类”模式还是“回归”模式(此处“回归”指的是机器学习中的概念,而非统计学意义上的回归)——即,我的多层感知器是返回一个类别标签还是一个预测值?如果是后者,那么你的输出层只有一个节点。如果是前者,那么你的输出层节点数量与类别标签数量相同。例如,如果你想要的结果是将每个实例标记为“欺诈”或“非欺诈”,那就是两个类别标签,因此,输出层有两个节点。

  3. 隐藏层:在这两层(输入层和输出层)之间显然是隐藏层。总是从单个隐藏层开始。那么,隐藏层需要多少节点呢?这里有一个经验法则:将隐藏层的(初始)大小设置为略大于输入层节点数量的节点数。与输入层节点数较少的情况相比,这种多余的容量将有助于你的数值优化例程(例如,梯度下降)收敛。

总之,开始时你的网络架构应包含三层;第一层(输入层)和最后一层(输出层)的大小分别由你的数据和模型设计决定。一个略大于输入层的隐藏层几乎总是开始时的好设计。

所以在你的情况下,一个合适的网络结构开始应该是:

输入层:5个节点 –> 隐藏层:7个节点 –> 输出层:3个节点

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注