使用 Keras 回调的激活层参数调度程序

数据挖掘 喀拉斯 张量流
2022-02-15 18:33:36

我想用自定义激活层训练一个 keras 模型。自定义激活层有一个固定的不可训练参数。

我想在几个时期后的训练期间更改/设置模型中所有自定义激活层的这个不可训练参数。

如何使用 keras 回调来实现这一点?

1个回答

您需要为此编写一个自定义回调,以实现该on_epoch_end方法。大致它应该看起来像这样

class CustomCallback(keras.callbacks.Callback):

    def __init__(self, freq):
        super().__init__()
        self.freq = freq   # how often to change the parameter

    def on_epoch_end(self, epoch):

        if epoch % freq == 0 and epoch > 0:

            weights = self.model.get_weights()

            # here you change the weight you want, e.g. it is the 5th layer
            weights[4] = weights[4] / 10

            self.model.set_weights(weights)