在此示例中,我们加载了MNIST数据集,该数据集包含手写数字图像及其相应的标签。我们定义了一个包含两个密集层的模型,其中第一个密集层有512个神经元,激活函数为ReLU,并且我们使用了dropout来防止过度拟合。最后一层密集层具有10个神经元,输出数字的概率分布。我们使用Adam优化器和稀疏分类交叉熵作为损失函数来编译模型,并在训练过程中记录了精度指标。我们使用fit方法来训练模型,并使用evaluate方法来评估模型的性能。
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# 加载数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train = x_train.reshape(-1, 28 * 28).astype("float32") / 255.0
x_test = x_test.reshape(-1, 28 * 28).astype("float32") / 255.0
# 定义模型
model = keras.Sequential(
[
layers.Dense(512, activation="relu"),
layers.Dropout(0.3),
layers.Dense(10),
]
)
# 编译模型
model.compile(
optimizer=keras.optimizers.Adam(0.001),
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=["accuracy"],
)
# 训练模型
model.fit(x_train, y_train, batch_size=32, epochs=5, verbose=2)
# 评估模型
model.evaluate(x_test, y_test, batch_size=32, verbose=2)