我已经开始学习深度学习和使用keras图书馆。但是我对如何正确估计用于方法units参数的值感到困惑dense。我遇到了这个提示,我们可以将其作为输入节点和输出节点数量的平均值,但它在任何地方都说它来自经验。我想知道是否有一些事情需要注意以明智地估计它或我需要知道的任何其他事情。谢谢您的帮助。
classifier.add(Dense(units=6, kernel_initializer="uniform", activation="relu", input_dim=11))
我已经开始学习深度学习和使用keras图书馆。但是我对如何正确估计用于方法units参数的值感到困惑dense。我遇到了这个提示,我们可以将其作为输入节点和输出节点数量的平均值,但它在任何地方都说它来自经验。我想知道是否有一些事情需要注意以明智地估计它或我需要知道的任何其他事情。谢谢您的帮助。
classifier.add(Dense(units=6, kernel_initializer="uniform", activation="relu", input_dim=11))
没有已知的方法来确定评估输入或输出数量的良好网络结构。它基本上依赖于网络的每个重要参数中的训练示例数量、批量大小、时期数。
此外,大量单元会引入过度拟合和梯度爆炸等问题。另一方面,较少的单元数会导致模型具有高偏差和低准确度值。再一次,这取决于用于训练的数据大小。
可悲的是,它正在尝试一些不同的值来为您提供最佳调整。您可以选择为您的数据集提供最低损失和验证损失值以及最佳准确度的组合。
你可以对你的单位值数量做一些比例,比如:
# Build the model
model = Sequential()
model.add(Dense(num_classes * 8, input_shape=(shape_value,), activation = 'relu' ))
model.add(Dropout(0.5))
model.add(Dense(num_classes * 4, activation = 'relu'))
model.add(Dropout(0.2))
model.add(Dense(num_classes * 2, activation = 'relu'))
model.add(Dropout(0.2))
#Output layer
model.add(Dense(num_classes, activation = 'softmax'))
上面的模型显示了一个分类 AI 系统的示例。num_classes是系统必须选择的不同类别的数量。例如,在 Keras 的 iris 数据集中,我们有:
num_classes = 3
但是,这可能会导致比其他随机值更差的结果。我们需要通过反复试验将参数调整到训练数据集。