考虑以下模型:
model = Sequential()
model.add(Dense(60, input_shape=(60,), activation='relu', kernel_constraint=MaxNorm(3)))
model.add(Dropout(0.2))
model.add(Dense(30, activation='relu', kernel_constraint=MaxNorm(3)))
model.add(Dropout(0.2))
model.add(Dense(1, activation='sigmoid'))
我理解 Dropout 背后的正则化想法。根据我的理解,Dropout 是按层应用的,速率p
决定了神经元被丢弃的概率。在上面的例子中,我无法理解第一个dropout层是应用于第一个隐藏层还是第二个隐藏层。因为正如我之前提到的,dropout 是按层应用的,这里让我感到困惑的是 Keras 将 dropout 作为一个单独的层来处理。此外,如果将第一个辍学层应用于第二个隐藏层,那么第二个辍学层呢?它是否应用于输出层(将 dropout 应用于输出神经元根本无效)?那么请问有人可以澄清这些要点吗?
根据 keras 中的文档:
将 Dropout 应用于输入。
因此,丢弃的输入层的概率为p
。在您的情况下,它意味着第一层。在您的示例中,来自第一层的 60 个神经元中的 20% 将被丢弃。
此外,如果 dropout 在接替它的层上工作,这也是没有意义的,因为这样您将从最后一层退出 - 在分类中可能是结果。