我正在尝试在 tensorflow 中实现一个带有 dropout 的神经网络。
tf.layers.dropout(inputs, rate, training)
来自文档:“Dropout 包括在训练期间的每次更新时将输入单元的分数率随机设置为 0,这有助于防止过度拟合。保留的单元按 1 / (1 - rate) 缩放,因此它们的总和在训练时间和推理时间没有变化。”
现在我明白了,如果 dropout 应用在严格高于零的 sigmoid 激活之上,则会出现这种行为。如果一半的输入单元归零,所有输出的总和也将减半,因此将它们缩放 2 倍是有意义的,以便在下一层之前重新获得某种一致性。
现在,如果使用以零为中心的 tanh 激活怎么办?上面的推理不再成立,那么按上述因素缩放 dropout 的输出仍然有效吗?有没有办法防止 tensorflow dropout 缩放输出?
提前致谢