如何使用TensorFlow来验证Python中Fashion MNIST的预测?
简介
TensorFlow是一个开源软件库,用于构建和训练机器学习模型。其中一个最流行的数据集是Fashion MNIST,它包含了10个类别的衣服图片。在本文中,我们将探讨如何使用TensorFlow来验证Python中Fashion MNIST的预测。
更多Python文章,请阅读:Python 教程
下载并导入MNIST数据集
首先,我们需要从TensorFlow中导入我们需要的一些库和数据集。
import tensorflow as tf
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()
这里我们使用了TensorFlow中自带的Fashion MNIST数据集,其中训练集和测试集已经被分别赋值给x_train,y_train,x_test和y_test。
数据可视化
让我们来看看整个数据集中的一些例子,并且看看这些例子被正确分类的频率。
import matplotlib.pyplot as plt
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(x_train[i], cmap=plt.cm.binary)
plt.xlabel(class_names[y_train[i]])
plt.show()
这段代码使用了matplotlib库在一个5×5的图像网格中展示了前25个图片。每个图片下都有一个标签,对应这个图片所表示的类别。
创建模型
接下来,我们将为数据集创建一个基于神经网络的模型。在这个例子中,我们使用Sequential API进行模式构建。该模型包含了两个隐藏层和一个输出层。在我们的第一个隐藏层中,我们使用ReLU作为激活函数,并将它设置为有128个神经元。我们的第二个隐藏层设置为有64个神经元。最后,我们使用softmax作为我们的输出层激活函数,以给出每个输入图像属于不同类别的概率。
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
编译模型
在完成了模型构建后,我们还需要进行编译以生成一个可训练的模型。在这个例子中,我们使用了adam优化器,并使用交叉熵损失函数和精度度量。
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
训练模型
我们已经完成了模型构建和编译,现在可以使用我们的数据集来训练模型了。
model.fit(x_train, y_train, epochs=10)
在这个例子中,我们将两个输入数据集(x_train和y_train)提供给了我们的模型,使用10个时期(也就是我们的模型将在整个数据集上迭代10次)进行训练。
评估模型
在完成了模型的训练后,我们可以使用测试数据集来评估模型的表现情况。
test_loss, test_accuracy = model.evaluate(x_test, y_test)
print('Test accuracy:', test_accuracy)
在本例中,我们评估了测试数据集,并打印了测试得分。
预测美观的衣服
在完成了模型的训练和评估后,我们可以使用它来预测美观的衣服。
predictions = model.predict(x_test)
import numpy asas np
for i in range(5):
plt.grid(False)
plt.imshow(x_test[i], cmap=plt.cm.binary)
plt.xlabel("Actual: " + class_names[y_test[i]])
plt.title("Prediction " + class_names[np.argmax(predictions[i])])
plt.show()
在本例中,我们使用了测试集的前5个样本来进行测试。我们首先绘制了每个样本的实际标签下的图像,然后绘制标签最可能匹配的预测标签的图像。
这个例子的输出应该显示出5个标签,颜色与实际标签相同,而灰色的就是预测的标签。
结论
在本文中,我们已经学习了如何使用TensorFlow来验证Python中的Fashion MNIST预测。我们已经下载并导入MNIST数据集,使用matplotlib库对其进行可视化,建立了一个基于神经网络的模型,并对模型进行了编译和训练。在最后,我们使用测试集对数据进行评估。通过这个例子,我们可以了解神经网络的构建和训练过程,并证明了Python和TensorFlow是构建模型的优秀工具。