使用L2正则化将sklearn MLPC分类器移植到Keras

使用L2正则化将sklearn MLPC分类器移植到Keras,keras,scikit-learn,Keras,Scikit Learn,我想将以下sklearn模型移植到keras: model = MLPClassifier(activation='tanh', hidden_layer_sizes=(60,50), alpha=0.001, random_state=42) 到目前为止,我得到的是: from keras.models import Sequential from keras.layers import Dense from keras import regularizers from tensorflow

我想将以下sklearn模型移植到keras:

model = MLPClassifier(activation='tanh', hidden_layer_sizes=(60,50), alpha=0.001, random_state=42)
到目前为止,我得到的是:

from keras.models import Sequential
from keras.layers import Dense
from keras import regularizers
from tensorflow import set_random_seed

set_random_seed(42)

model = Sequential([
  Dense(60, activation='tanh'),
  Dense(50, activation='tanh'),
  Dense(1, kernel_initializer='normal', activation='sigmoid') 
])

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy', 'binary_accuracy'])

model.fit(
  x_train,
  y_train,
  epochs=200,
  batch_size=200,
  validation_data=(x_test, y_test)
)
但现在,我正在与正规化术语作斗争。sklearn文档在以下方面没有太多表现力:

alpha:浮动,可选,默认值为0.0001 L2惩罚(正则化项)参数

但在keras中,致密层具有3个正则化特性

核正则化器:应用于核权重矩阵的正则化器函数(参见正则化器)。 偏置\正则化器:应用于偏置向量的正则化器函数(请参见正则化器)。 活动\正则化器:应用于层输出的正则化器函数(其“激活”)


哪一个实际上等同于sklearn正则化?

根据sklearn文档,alpha参数用于正则化权重

MLPrePressor和MLPClassizer都使用参数alpha来 正则化(L2正则化)有助于避免 通过惩罚大幅度的重量进行过度拟合

Keras允许您为权重、偏差和激活值指定不同的正则化。显然,您可以为这三种情况使用相同的正则化器

正则化也适用于每层,例如:

from keras import regularizers.l2
reg1 = l2(0.0001)
reg2 = l2(0.001)

model = Sequential([
  Dense(60, activation='tanh', kernel_regularizer=reg1, bias_regularizer=reg1, activity_regularizer=reg1),
  Dense(50, activation='tanh', kernel_regularizer=reg2, bias_regularizer=reg2, activity_regularizer=reg2),
  ...

这有助于通过惩罚权重来避免过度拟合
所以基本上你是说我需要使用偏差+内核正则化,但没有活动正则化不,这只是sklearn文档的摘录:)正则化激活很重要,这是一篇关于这个主题的好文章:但问题不是如何使用正则化,问题是如何在keras中实现与sklearn在MLPClassizer中完全相同的正则化行为。只需快速扫描链接部分“MLP活动正则化”,因此它实际上是唯一的活动\u正则化查看sklearn代码,似乎正则化应用于权重: