如何确定隐藏层中神经元的数量进行分类

数据挖掘 神经网络
2022-02-12 22:32:07

我使用 Iris 数据集与 3 层神经网络进行分类
我决定使用:
3 个神经元作为输入,因为它有 3 个特征,
3 个神经元作为输出,因为它有 3 个类,并且
在隐藏层 中进行分类的最佳神经元数量是多少在这种情况下?

2个回答

为了自动化评估,您可以使用 Keras Tuner https://keras-team.github.io/keras-tuner/之类的工具

从他们的文档中,示例设置如下所示。

单位的最小值-最大值是您可以根据自己的情况对其进行调整的位置。

from tensorflow import keras
from tensorflow.keras import layers
from kerastuner.tuners import RandomSearch


def build_model(hp):
    model = keras.Sequential()
    model.add(layers.Dense(units=hp.Int('units',
                                        min_value=32,
                                        max_value=512,
                                        step=32),
                           activation='relu'))
    model.add(layers.Dense(10, activation='softmax'))
    model.compile(
        optimizer=keras.optimizers.Adam(
            hp.Choice('learning_rate',
                      values=[1e-2, 1e-3, 1e-4])),
        loss='sparse_categorical_crossentropy',
        metrics=['accuracy'])
    return model

这个问题没有明确的答案。您应该尝试并评估模型如何执行测试不同的配置。但是,基本上,遵循以下两个前提:

  • 每层更多的神经元--> 更复杂的模型,你可能会获得更好的准确性。
  • 更多隐藏层--> 更复杂的模型,同样,您可能会获得更好的准确性。
  • 警告这两种方法都通过增加模型的复杂性来增加过拟合的机会。您需要通过统计稳健的模型选择程序(例如交叉验证)仔细评估它们

请注意,增加模型的复杂性会增加计算过程,并且如上所述,要小心过度拟合。

我建议先尝试少量的神经元,然后尝试逐步增加,看看模型是否取得了一些改进。