MINST数字识别采用避免过拟合的方式:正则化用python代码写出
时间: 2023-12-10 20:04:09 浏览: 100
以下是使用Python和Keras实现MNIST数字识别并采用L2正则化的方式的示例代码:
```python
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers, regularizers
# 导入MNIST数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 将像素值缩放到 [0, 1] 的范围内
x_train = x_train.astype("float32") / 255
x_test = x_test.astype("float32") / 255
# 将标签转换为 one-hot 编码
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
# 定义模型
model = keras.Sequential(
[
keras.Input(shape=(784)),
layers.Dense(256, activation="relu", kernel_regularizer=regularizers.l2(0.001)), # 添加 L2 正则化
layers.Dense(128, activation="relu", kernel_regularizer=regularizers.l2(0.001)), # 添加 L2 正则化
layers.Dense(10, activation="softmax"),
]
)
# 编译模型
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
# 训练模型
model.fit(x_train, y_train, epochs=20, batch_size=128, validation_split=0.1)
# 在测试集上评估模型性能
test_loss, test_acc = model.evaluate(x_test, y_test)
print("Test accuracy:", test_acc)
```
在上面的代码中,我们使用了两个 Dense 层,并在每个层上添加了 L2 正则化,其中正则化强度为 0.001。此外,我们还使用了验证集来监测模型的性能,并使用 Adam 优化器编译了模型。最后,我们在测试集上评估了模型的性能。
阅读全文