Python 如何使用Python和TensorFlow下载和探索时尚MNIST数据集?
时尚MNIST是一个作为MNIST数据集的替代品,包含了10种不同类型的衣物,如T恤、裤子和包等。通过使用Python和TensorFlow来下载和探索时尚MNIST数据集,可以帮助我们更好地了解机器学习中的图像分类问题。
阅读更多:Python 教程
下载数据集
通过TensorFlow官方网站提供的API可以轻松下载时尚MNIST数据集。在Python中使用以下代码即可下载:
import tensorflow as tf
mnist = tf.keras.datasets.fashion_mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()
以上代码将时尚MNIST数据集分成了训练集和测试集,并将其存在了四个numpy数组变量中。training_images
包含了训练图像,training_labels
包含了训练图像的标签,test_images
包含了测试图像,test_labels
包含了测试图像的标签。
探索数据集
探索时尚MNIST数据集可以帮助我们更好地了解其中的图像以及对应的标签。以下是一些探索数据集的示例代码。
查看单个图像
查看单个图像可以通过以下代码实现:
import matplotlib.pyplot as plt
plt.imshow(training_images[0])
print(training_labels[0])
以上代码将训练集中的第一张图像显示出来,并打印出该图像对应的标签。
查看多个图像
查看多个图像可以通过以下代码实现:
import matplotlib.pyplot as plt
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(training_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[training_labels[i]])
plt.show()
以上代码将训练集中的前25张图像按照5行5列的方式显示出来,并在每个图像下面显示出对应的标签。
查看数据集大小
查看数据集大小可以通过以下代码实现:
print(training_images.shape)
print(len(training_labels))
print(test_images.shape)
print(len(test_labels))
以上代码将打印出训练集和测试集的大小。
预处理数据集
在将数据集输入模型之前,我们需要将其进行预处理,以便提高模型的准确性。以下是一些预处理数据集的示例代码。
归一化
将像素值从0到255缩放到0到1之间可以提高模型的准确性。以下是归一化数据集的示例代码:
training_images = training_images / 255.0
test_images = test_images / 255.0
转换标签
标签从0到9分别代表不同类型的衣物。我们需要将标签转换为对应的名称。以下是转换标签的示例代码:
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
training_labels = [class_names[i] for i in training_labels]
test_labels = [class_names[i] for i in test_labels]
我们将训练集和测试集中的标签转换为对应的名称,并存在了两个新的numpy数组变量中。
建立模型
我们使用TensorFlow建立一个简单的卷积神经网络模型,用于对时尚MNIST数据集进行分类。以下是建立模型的示例代码:
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D(2,2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
以上代码建立了一个包含两个卷积层、两个最大池化层和两个全连接层的模型,输出10个不同的衣物类型的概率。
训练模型
接下来,我们需要训练模型以提高其准确性。以下是训练模型的示例代码:
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(training_images, training_labels, epochs=10, validation_data=(test_images, test_labels))
以上代码将使用Adam优化器和sparse categorical crossentropy损失函数来编译模型,并在训练集上进行10个epoch的训练。在训练时,我们还将使用测试集来验证模型的准确性。
评估模型
我们还可以使用模型来评估时尚MNIST数据集。以下是评估模型的示例代码:
test_loss, test_accuracy = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_accuracy)
以上代码将评估模型在测试集上的准确性。
结论
通过使用Python和TensorFlow下载和探索时尚MNIST数据集,并建立、训练、评估模型,我们可以更好地了解机器学习中的图像分类问题,并提高模型的准确性。