1

在教程的一個我的工作(下面給定的鏈路)中,作者概述了基線神經網絡結構爲:kernel_constraint = max_norm(3)是做什麼的?

卷積輸入層,尺寸爲3×3,整流器活化函數32的特徵圖和最大規範的重量限制設置爲3

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

什麼是最大的標準重量約束均值和做轉換次數層? (我們使用Keras。)

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

謝謝!

回答

3

max_norm的重量約束是做什麼的?

maxnorm(m)會,如果你的權重的L2範數超過m,通過降低標準來m一個係數調整你的整個權重矩陣。 正如你可以找到keras codeclass MaxNorm(Constraint)

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 

的方法,另外,maxnormaxis說法,沿着規範的計算方法。在你的例子中,你沒有指定一個軸,因此規範是在整個權重矩陣上計算的。例如,如果您想限制每個卷積濾波器的範數,假設您使用的是維數排序,則權重矩陣的形狀將爲(rows, cols, input_depth, output_depth)。通過axis = [0, 1, 2]計算標準將限制每個濾波器到給定的標準。

爲什麼要這樣做?

直接約束權重矩陣是另一種正則化。如果你使用一個簡單的L2正則化術語,你會使用你的損失函數懲罰高權重。有了這個限制,你可以直接調整。 也與keras代碼鏈接,這似乎特別適合與dropout圖層結合使用。更多信息請參閱章節5.1中的this paper