微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Keras 如何为下载的模型强制执行 BatchNormalization 的零伽马初始化

如何解决Keras 如何为下载的模型强制执行 BatchNormalization 的零伽马初始化

我想为下载的模型更改 Batchnormalization 层的认伽玛初始化。 例如: 我有一个下载的 EfficientNetB0 模型:

from tensorflow.python.keras.applications.efficientnet import EfficientNetB0

model = EfficientNetB0(include_top=False,weights=None,input_shape=(200,200,3))

下载后已经用gamma = 1初始化:

for layer in model.layers:
    if isinstance(layer,Batchnormalization):
        pprint(layer.gamma.numpy())
        break

# prints:
# array([1.,1.,#        1.,1.],#       dtype=float32)

所以像下面这样的代码不起作用:

from tensorflow.keras.layers import Batchnormalization

for layer in model.layers:
    if isinstance(layer,Batchnormalization):
        layer.gamma_initializer = 'zeros'

# layer.gamma.numpy() is still:
# array([1.,#       dtype=float32)

有没有办法强制零伽马初始化?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。