tensorflow - BN层中的Keras训练和可训练属性
问题描述
如此处所述
但是,在 BatchNormalization 层的情况下,在该层上设置 trainable = False 意味着该层随后将在推理模式下运行(意味着它将使用移动均值和移动方差来归一化当前批次,而不是使用当前批次的均值和方差)。
如果我trainable = False
最初设置,那么它将使模型在推理模式下运行,即training = False
如上面官方文档中所述。但是,如果我trainable = True
在上述步骤之后重置会发生什么?属性会training
被重置True
吗?还是会继续在推理模式下运行?
解决方案
好的。所以,我从这里得到了答案
当您解冻包含 BatchNormalization 层以进行微调的模型时,您应该通过在调用基本模型时传递 training=False 将 BatchNormalization 层保持在推理模式。否则,应用于不可训练权重的更新将突然破坏模型所学的内容。
推荐阅读
- ios - 如何在 React Native 中使用“原生”的 UI 观感?
- python-3.x - 当没有对它的引用时,它的 finally 块中没有“等待”的异步生成器会立即关闭吗?
- python - 如何从 pandas 数据框中另一列的多个值创建列中的值列表?
- javascript - 通过包含的单词获取元素
- python - 忽略 tensorflow.python 中未解析的引用
- python - 如何从 Python 运行 SQL Server 脚本
- java - 用 Jackson 序列化 ImmutableMap
- mysql - 为什么当我们使用 python pandas 插入时,mysql varchar 列将 .0 附加到 phonenumer
- ios - Xcode 12 - 当有另一个 Swift 包作为依赖项时,SwiftUI 预览在 Swift 包上不起作用 - 向代理发送“previewInstances”消息
- windows - Windows 驱动程序 - HCK 签名不工作 8/8.1/2012