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 (将#修改为@)