一个神经网络有多少个神经元?

Avatar
admin

设置一定数量的神经元

在 k 折交叉验证中计算某些性能指标的平均值

用不同数量的神经元重复这个过程

交叉验证很重要,因为使用它我们可以确保模型不会过拟合或欠拟合。

这个过程非常类似于超参数调优,因为隐藏层中的神经元数量实际上是一个要调优的超参数。

现在让我们看看如何在 Python 中实现这个过程。

在 Pytho n 中的示例

在这个例子中,我将展示如何使用 scikit-learn 库优化 Python 中的神经元数量。事实上,你也可能会使用 Keras 来构建神经网络,但概念是完全相同的。

我将使用 scikit-learn 中包含的乳腺癌示例数据集。

首先,让我们导入一些有用的库。

然后,我们可以加载我们的数据集,并将其分成训练集和测试集。

现在,我们必须定义我们的模型。在本例中,我将使用一个简单的带有单个隐藏层的多层感知器。为了简单起见,构造函数的所有参数都保留在它们的标准值中。我只是设置随机状态,以确保结果的可重复性。

在将数据集提供给神经网络之前,不要忘记缩放特征。为简单起见,我将在 scikit-learn 中使用 Pipeline 对象,然后应用标准化。

现在,我们必须通过搜索最佳神经元数量来优化我们的网络。请记住,我们尝试了几种可能的数字并计算交叉验证中性能指标的平均值。最大化这样一个值的神经元数量就是我们正在寻找的数量。

为此,我们可以使用 GridSearchCV 对象。由于我们正在处理二元分类问题,因此我们要最大化的指标是 AUROC。我们将以 2 的步长跨越 5 到 100 个神经元。

)

最后,我们可以寻找最佳的神经元数量。

搜索结束后,我们会得到最好的平均分,即:

神经元的最佳数量是:

最后,我们可以在测试数据集上计算这样一个模型的 AUROC,以确保我们没有对数据集进行过多的处理。

我们得到的值仍然很高,所以我们很确定优化后的模型已经泛化了训练数据集,从它携带的信息中学习。

总结

优化神经网络可能是一个复杂的任务。在这篇文章中,我已经解释了一种优化神经元数量的可能方法,但是同样的概念甚至可以应用到其他超参数(比如激活函数、小批量大小、时代数量、学习速度)。记住,超参数的数量越多,优化的速度就越慢。

欢迎加入Imagination GPU与人工智能交流群

群已满200人,入群请加小编拉进群,

小编微信号:eetrend89(添加请备注 公司名和职称)

推荐阅读

Imagination 2021年开发者专刊

END

Imagination Technologies是一家总部位于英国的公司,致力于研发芯片和软件知识产权(IP),基于Imagination IP的产品已在全球数十亿人的电话、汽车、家庭和工作场所中使用。获取更多物联网、智能穿戴、通信、汽车电子、图形图像开发等前沿技术信息,欢迎关注 Imagination Tech !

关注我们返回搜狐,查看更多