记录编写并训练测试经典数据集mnist

发布时间 2023-09-07 23:13:07作者: 立体风
import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(10, activation='softmax')
])

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

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

简单解释:

这段代码使用了TensorFlow库来训练一个简单的神经网络模型,用于识别手写数字。以下是代码的详细解释:

  1. 首先,导入TensorFlow库,并使用tf.keras.datasets.mnist加载MNIST数据集。

  2. mnist.load_data()函数用于加载MNIST数据集的训练和测试数据。返回值是一个元组列表,其中每个元组包含训练或测试数据的特征和对应的标签。

  3. x_trainx_test分别表示训练和测试数据的特征,它们的形状是(28, 28),即每个图像是一个28x28的二维数组。将特征数据归一化,将像素值除以255,使得像素值在0到1之间。

  4. 创建一个顺序模型,包含以下层:

    • tf.keras.layers.Flatten(input_shape=(28, 28)):将输入的二维数组展平为一维数组。
    • tf.keras.layers.Dense(128, activation='relu'):添加一个全连接层,包含128个神经元,使用ReLU激活函数。
    • tf.keras.layers.Dense(10, activation='softmax'):添加一个输出层,包含10个神经元,对应0到9的十个数字,使用softmax激活函数输出每个数字的概率。
  5. 编译模型,设置优化器为Adam,损失函数为稀疏类别交叉熵(sparse_categorical_crossentropy),评估指标为准确率。

  6. 使用训练数据对模型进行训练,设置训练周期为5。

  7. 使用测试数据对模型进行评估,输出在测试集上的准确率。

这段代码展示了如何使用TensorFlow库构建和训练一个简单的神经网络模型。通过调整模型的结构、优化器、损失函数等参数,可以进一步提高模型的性能。