gpt4 book ai didi

optimization - kernel_constraint = max_norm(3)有什么作用?

转载 作者:行者123 更新时间:2023-12-03 15:35:28 26 4
gpt4 key购买 nike

在我正在研究的教程之一(下面给出的链接)中,作者将基线神经网络结构概述为:

卷积输入层,32个特征图,大小为3×3,整流器激活函数,最大范数的权重约束设置为3。

model.add(Conv2D(32, (3, 3), input_shape=(3, 32, 32), padding='same', activation='relu', kernel_constraint=maxnorm(3)))


max norm的权重约束对Conv层意味着什么? (我们正在使用Keras。)

https://machinelearningmastery.com/object-recognition-convolutional-neural-networks-keras-deep-learning-library/

谢谢!

最佳答案

max_norm的权重约束有什么作用?

如果重量的L2-范数超过maxnorm(m),则m将按比例缩小整个体重矩阵,该系数将范数减小为m
您可以在class MaxNorm(Constraint)keras code中找到:

def __call__(self, w):
norms = K.sqrt(K.sum(K.square(w), axis=self.axis, keepdims=True))
desired = K.clip(norms, 0, self.max_value)
w *= (desired / (K.epsilon() + norms))
return w


另外, maxnorm具有一个 axis参数,根据该参数计算范数。在您的示例中,您没有指定轴,因此范数是在整个权重矩阵上计算的。例如,如果您想约束每个卷积滤波器的范数,并假设您使用的是 tf维度排序,则权重矩阵的形状将为 (rows, cols, input_depth, output_depth)。计算 axis = [0, 1, 2]上的范数会将每个过滤器约束到给定的范数。

为什么要这样做?

直接约束权重矩阵是另一种正则化。如果使用简单的L2正则化项,则损失函数将对高权重进行惩罚。有了这个约束,您就可以直接进行正则化。
正如在 keras代码中链接的那样,与 dropout层结合使用时,这似乎特别有效。更多信息,请参见 this paper中的第5.1章。

关于optimization - kernel_constraint = max_norm(3)有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45970888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com