Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras中的整体重量衰减_Python_Neural Network_Deep Learning_Keras - Fatal编程技术网

Python Keras中的整体重量衰减

Python Keras中的整体重量衰减,python,neural-network,deep-learning,keras,Python,Neural Network,Deep Learning,Keras,有没有办法设定Keras中的全局重量衰减 我知道使用regularizers()的分层方法,但我找不到任何关于设置全局权重衰减的方法的信息。根据github repo(),没有方法进行全局权重衰减。我在这里回答了这个问题,所以其他有同样问题的人不必再寻找答案 为了获得keras中的全局权重衰减,必须将正则化器添加到模型中的每一层。在我的模型中,这些层是批量归一化(beta/gamma正则化器)和密集/卷积(W_正则化器/b_正则化器)层 这里描述了分层正则化:()。无法直接将“全局”权重衰减一次

有没有办法设定Keras中的全局重量衰减


我知道使用regularizers()的分层方法,但我找不到任何关于设置全局权重衰减的方法的信息。

根据github repo(),没有方法进行全局权重衰减。我在这里回答了这个问题,所以其他有同样问题的人不必再寻找答案

为了获得keras中的全局权重衰减,必须将正则化器添加到模型中的每一层。在我的模型中,这些层是批量归一化(beta/gamma正则化器)和密集/卷积(W_正则化器/b_正则化器)层


这里描述了分层正则化:()。

无法直接将“全局”权重衰减一次性应用于整个keras模型

但是,正如我所描述的,您可以通过在模型的层中循环并在适当的层上手动应用正则化器,在模型上使用权重衰减。以下是相关的代码片段:

model=keras.applications.ResNet50(包括_top=True,weights='imagenet')
α=0.00002#重量衰减系数
对于model.layers中的图层:
如果isinstance(layer,keras.layers.Conv2D)或isinstance(layer,keras.layers.Dense):
layer.add_损失(lambda:keras.regulatories.l2(alpha)(layer.kernel))
如果hasattr(图层,“偏移正则化器”)和layer.use_偏移:
层加损耗(λ:keras.正则化器l2(α)(层偏差))

发布完整代码,在Keras车型上应用重量衰减(由上述帖子填写):


我想你得一个接一个地做。对于整个模型,没有关于权重衰减的通用设置。
# a utility function to add weight decay after the model is defined.
def add_weight_decay(model, weight_decay):
    if (weight_decay is None) or (weight_decay == 0.0):
        return

    # recursion inside the model
    def add_decay_loss(m, factor):
        if isinstance(m, tf.keras.Model):
            for layer in m.layers:
                add_decay_loss(layer, factor)
        else:
            for param in m.trainable_weights:
                with tf.keras.backend.name_scope('weight_regularizer'):
                    regularizer = lambda: tf.keras.regularizers.l2(factor)(param)
                    m.add_loss(regularizer)

    # weight decay and l2 regularization differs by a factor of 2
    add_decay_loss(model, weight_decay/2.0)
    return