【发布时间】:2022-01-06 22:25:43
【问题描述】:
最初的问题是关于 TensorFlow 实现的。但是,答案是针对一般实现的。这个通用答案也是 TensorFlow 的正确答案。
在 TensorFlow 中使用批量标准化和 dropout(特别是使用 contrib.layers)时,我需要担心排序吗?
如果我使用 dropout,然后立即进行批量标准化,似乎可能会出现问题。例如,如果批量归一化训练到较大规模的训练输出,但同样的转移应用于较小的(由于有更多输出的补偿)规模数字而在测试期间没有丢失,那么班次可能已关闭。 TensorFlow 批量归一化层会自动对此进行补偿吗?或者这不是由于某种原因我失踪了吗?
另外,将这两者结合使用时,还有其他需要注意的陷阱吗?例如,假设我在上述方面以正确的顺序使用它们(假设 is 是正确的顺序),在多个连续层上同时使用批量标准化和 dropout 会不会有问题?我没有立即发现这有什么问题,但我可能会遗漏一些东西。
非常感谢!
更新:
一项实验测试似乎表明排序确实很重要。我只使用批处理规范和 dropout 反向运行了两次相同的网络。当 dropout 在批规范之前,验证损失似乎随着训练损失的下降而上升。在另一种情况下,它们都在下降。但在我的情况下,动作很慢,所以经过更多的训练后情况可能会发生变化,这只是一次测试。更明确和更明智的答案仍将不胜感激。
【问题讨论】:
标签: python neural-network tensorflow conv-neural-network