为什么正则化可以控制模型的复杂度代码示例
时间: 2023-09-29 07:06:43 浏览: 41
下面是一个简单的代码示例,演示如何使用L2正则化来控制模型的复杂度。在这个示例中,我们使用一个带有两个隐藏层的神经网络,其中每个隐藏层都包含50个神经元。我们使用L2正则化来惩罚模型参数的较大值,从而控制模型的复杂度。
```python
import tensorflow as tf
from tensorflow.keras import layers, regularizers
# 定义带有L2正则化的神经网络模型
model = tf.keras.Sequential([
layers.Dense(50, activation='relu', kernel_regularizer=regularizers.l2(0.01)),
layers.Dense(50, activation='relu', kernel_regularizer=regularizers.l2(0.01)),
layers.Dense(10, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(train_data, train_labels, epochs=10, validation_split=0.2)
```
在上面的代码中,我们通过在每个隐藏层中添加`kernel_regularizer=regularizers.l2(0.01)`参数来使用L2正则化。其中,`regularizers.l2(0.01)`表示L2正则化强度为0.01。通过这种方式,我们可以有效地控制模型的复杂度,从而提高模型的泛化能力,避免过拟合问题。