Fashion-MNIST データセットの紹介

最近受けている講座の中で、kerasに同梱されているデータセットの中に、Fashion-MNISTという画像データがあることを知りました。
画像データを使って機械学習を試す時(と言っても、自分が画像データを扱うことはほぼないのですが)は、
大抵手書き数字のMNISTデータを使っていて、いささか飽きていたので、早速これを確認してみました。

ドキュメントはこちら。
Fashion-MNIST database of fashion articles
手書き数字のMNISTと完全互換らしく、クラス数は10個、画像サイズは28*28、データ件数も訓練データ60,000とテストデータ10,000のデータになっています。

読み込みもほぼ同じです。

今回はデータセットの紹介なので、読み込んで実際に画像を表示してみるところまでやってみます。


from tensorflow.keras.datasets import fashion_mnist
import matplotlib.pyplot as plt

(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
print("x_train.shape: ", x_train.shape)
print("y_train.shape: ", y_train.shape)
print("x_test.shape: ", x_test.shape)
print("y_test.shape: ", y_test.shape)
"""
x_train.shape:  (60000, 28, 28)
y_train.shape:  (60000,)
x_test.shape:  (10000, 28, 28)
y_test.shape:  (10000,)
"""
# 0〜9が どんなアイテムに対応しているかの対応はdatasetに含まれないので別途作る
target_name = {
        0: "T-shirt/top",
        1: "Trouser",
        2: "Pullover",
        3: "Dress",
        4: "Coat",
        5: "Sandal",
        6: "Shirt",
        7: "Sneaker",
        8: "Bag",
        9: "Ankle boot",
    }

fig = plt.figure(figsize=(10, 13), facecolor="w")
for i in range(100):
    ax = fig.add_subplot(10, 10, i+1)
    ax.set_xticklabels([])
    ax.set_yticklabels([])
    ax.imshow(x_train[y_train == i // 10][i % 10], cmap="gray_r")
    if i % 10 == 0:
        # アイテムの最初の画像にタイトルつける
        ax.set_title(target_name[i//10])

plt.show()

結果として表示される画像がこちらです。

手書き数字のMNISTよりちょっと楽しそうなデータですね。
そして結構難易度たかそうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です