首页 > 解决方案 > BN层中的Keras训练和可训练属性

问题描述

如此处所述

但是,在 BatchNormalization 层的情况下,在该层上设置 trainable = False 意味着该层随后将在推理模式下运行(意味着它将使用移动均值和移动方差来归一化当前批次,而不是使用当前批次的均值和方差)。

如果我trainable = False最初设置,那么它将使模型在推理模式下运行,即training = False如上面官​​方文档中所述。但是,如果我trainable = True在上述步骤之后重置会发生什么?属性会training被重置True吗?还是会继续在推理模式下运行?

标签: tensorflowkerasdeep-learningneural-network

解决方案


好的。所以,我从这里得到了答案

当您解冻包含 BatchNormalization 层以进行微调的模型时,您应该通过在调用基本模型时传递 training=False 将 BatchNormalization 层保持在推理模式。否则,应用于不可训练权重的更新将突然破坏模型所学的内容。


推荐阅读