官术网_书友最值得收藏!

How to do it

L1/L2 regularization is implemented in Keras, as follows:

model = Sequential()
model.add(Dense(1000,input_dim=784,activation='relu',kernel_regularizer=l2(0.1)))model.add(Dense(10, activation='softmax',kernel_regularizer=l2(0.1)))
model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy'])
history = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=500, batch_size=1024, verbose=1)

Note that the preceding involves invoking an additional hyperparameter—kernel_regularizerand then specifying whether it is an L1/L2 regularization. Furthermore, we also specify the lambda value that gives the weight to regularization.

We notice that, post regularization, the training dataset accuracy does not happen to be at ~100%, while the test data accuracy is at 98%. The histogram of weights post-L2 regularization is visualized in the next graph.

The weights of connecting the hidden layer to the output layer are extracted as follows:

model.get_weights()[0].flatten()

Once the weights are extracted, they are plotted as follows:

plt.hist(model.get_weights()[0].flatten())

We notice that the majority of weights are now much closer to zero when compared to the previous scenario, thus presenting a case to avoid the overfitting issue. We would see a similar trend in the case of L1 regularization.

Notice that the weight values when regularization exists are much lower when compared to the weight values when regularization is performed.

Thus, the L1 and L2 regularizations help us to avoid the overfitting issue on top of the training dataset.

主站蜘蛛池模板: 遂平县| 惠东县| 阆中市| 澄江县| 广德县| 濉溪县| 思茅市| 大埔区| 达拉特旗| 全州县| 望谟县| 榆社县| 利津县| 田阳县| 揭西县| 宜宾县| 宁明县| 开封市| 丹东市| 固安县| 呼伦贝尔市| 屏东市| 东光县| 洪泽县| 奉新县| 井冈山市| 平昌县| 射阳县| 久治县| 保靖县| 泗阳县| 陵水| 阳西县| 永修县| 塔城市| 米林县| 丽水市| 姜堰市| 平罗县| 当涂县| 商洛市|