Keras 权重衰减正则化不起作用

时间:2021-07-27 07:15:17

标签: python tensorflow keras

我为 MNIST 实现了一个非常基本的 CNN 分类器。 模型是这样的:

def defineModel():
reg=10000
global model
model = Sequential()
model.add(InputLayer(input_shape=input_shape))
model.add(layers.Conv2D(64, kernel_size=(5, 5), activation="relu",kernel_regularizer=l2(reg)))
model.add(layers.Conv2D(64, kernel_size=(5, 5), activation="relu",kernel_regularizer=l2(reg)))
model.add(layers.Flatten())
#model.add(layers.Dropout(0.25))
model.add(layers.Dense(128, activation="relu",kernel_regularizer=l2(reg)))
#model.add(layers.Dropout(0.5))
model.add(layers.Dense(num_classes, activation="softmax",kernel_regularizer=l2(reg)))
model.build()

如您所见,我使用了非常大的 l2 正则化,我希望这会破坏模型的准确性。但是对于一个时代,它不是:

def trainModel():
    global model
    model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
    model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.1)


def evalModel():
    score = model.evaluate(x_test, y_test, verbose=0)
    print("Test loss:", score[0])
    print("Test accuracy:", score[1])

evalModel() 打印:

Test loss: 0.034063227474689484
Test accuracy: 0.9898999929428101

我应该提一下,我已经在 CIFAR-10 分类器上使用了这种正则化,并且效果很好。不知道为什么它现在不起作用。

顺便说一句,对于图像 x,当我将其输入模型时,有什么办法可以得到一些 categorical_crossentropy lossregularization loss 原样用于 CNN 模型?

谢谢。

0 个答案:

没有答案
相关问题