Python 如何使用Python和TensorFlow下载和探索时尚MNIST数据集?

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数据集,并建立、训练、评估模型,我们可以更好地了解机器学习中的图像分类问题,并提高模型的准确性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程