记录编写并训练测试经典数据集mnist
#加载库
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)
加载数据,归一化数据,构建模型,编译模型,训练模型,评估模型,主要就是这6步。
简单解释:
这段代码使用了TensorFlow库来训练一个简单的神经网络模型,用于识别手写数字。以下是代码的详细解释:
-
首先,导入TensorFlow库,并使用
tf.keras.datasets.mnist
加载MNIST数据集。 -
mnist.load_data()
函数用于加载MNIST数据集的训练和测试数据。返回值是一个元组列表,其中每个元组包含训练或测试数据的特征和对应的标签。 -
x_train
和x_test
分别表示训练和测试数据的特征,它们的形状是(28, 28),即每个图像是一个28x28的二维数组。将特征数据归一化,将像素值除以255,使得像素值在0到1之间。 -
创建一个顺序模型,包含以下层:
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激活函数输出每个数字的概率。
-
编译模型,设置优化器为Adam,损失函数为稀疏类别交叉熵(sparse_categorical_crossentropy),评估指标为准确率。
-
使用训练数据对模型进行训练,设置训练周期为5。
-
使用测试数据对模型进行评估,输出在测试集上的准确率。
这段代码展示了如何使用TensorFlow库构建和训练一个简单的神经网络模型。通过调整模型的结构、优化器、损失函数等参数,可以进一步提高模型的性能。