python - 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 loss
和regularization loss
CNN 模型中使用的那些?
谢谢。
解决方案
推荐阅读
- swift - 将图像添加到我的 UIPickerView 哪里出错了?
- python - 将 pandas df 的行与同一 df 中的相同索引组合
- python - 如何从 python 中的 pandas 更改/访问 Dataframe 中的特定值
- ruby - 在类中嵌套模块并直接调用模块函数
- regex - 如何删除空白字符并在其位置插入字符串
- python-3.x - 如何使用 flask-sqlachemy 生成以下 json?
- android - 改造android中的certificatePinner
- php - 在ajax中使用while循环
- python - 我正在测试 HTTP 获取方法,但出现错误“没有名为 ASCII 的模块”?
- tomcat - 在netbeans问题中盯着tomcat