图像分类数据集(Fashion-MNIST)

"""
3.5. 图像分类数据集(Fashion-MNIST)
多类图像分类数据集
Fashion-MNIST
3.5.1. 获取数据集
"""
import d2lzh as d2l
from mxnet.gluon import data as gdata
import sys
import time

mnist_train = gdata.vision.FashionMNIST(train=True)
mnist_test = gdata.vision.FashionMNIST(train=False)
"""
训练集中和测试集中的每个类别的图像数分别为6,000和1,000。
因为有10个类别,所以训练集和测试集的样本数分别为60,000和10,000。
"""
print("len(mnist_train):", len(mnist_train))
print("len(mnist_test):", len(mnist_test))

"""
我们可以通过方括号[]来访问任意一个样本,下面获取第一个样本的图像和标签。
"""

feature, label = mnist_train[0]

print(feature, label)
"""
变量feature对应高和宽均为28像素的图像。
每个像素的数值为0到255之间8位无符号整数(uint8)。
它使用三维的NDArray存储。其中的后一维是通道数。
因为数据集中是灰度图像,所以通道数为1。
为了表述简洁,我们将高和宽分别为 h 和 w 像素的图像的形状记为 h×w 或(h,w)最
"""
print("feature.shape:", feature.shape)
print("feature.dtype:", feature.dtype)
print("len(feature):", len(feature))

# 图像的标签使用NumPy的标量表示。它的类型为32位整数(int32)。
"""
Fashion-MNIST中一共包括了10个类别,
分别为t-shirt(T恤)、trouser(裤子)、
pullover(套衫)、dress(连衣裙)、
coat(外套)、sandal(凉鞋)、shirt(衬衫)、
sneaker(运动鞋)、bag(包)和ankle boot(短靴)。
以下函数可以将数值标签转成相应的文本标签。
"""

print("label:", label)
print("label.dtype:", label.dtype)

def get_fashion_mnist_labels(labels):
    text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat',
                  'sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']
    return [text_labels[int(i)] for i in labels]


# 本函数已保存在d2lzh包中方便以后使用
def show_fashion_mnist(images, labels):
    d2l.use_svg_display()
    # 这里的_表示我们忽略(不使用)的变量
    _, figs = d2l.plt.subplots(1, len(images), figsize=(12, 12))
    for f, img, lbl in zip(figs, images, labels):
        f.imshow(img.reshape((28, 28)).asnumpy())
        f.set_title(lbl)
        f.axes.get_xaxis().set_visible(True)
        f.axes.get_yaxis().set_visible(True)

X, y = mnist_train[0: 9]
show_fashion_mnist(X, get_fashion_mnist_labels(y))
"""
3.5.2. 读取小批量

"""

batch_size = 256
transformer = gdata.vision.transforms.ToTensor()
if sys.platform.startswith("win"):
    num_workers = 0 # 0 表示不用额外的进程来加速读取数据
else:
    num_workers = 4

train_iter = gdata.DataLoader(mnist_train.transform_first(transformer),
                              batch_size, shuffle=True, num_workers=num_workers)
test_iter = gdata.DataLoader(mnist_test.transform_first(transformer),
                             batch_size, shuffle=False, num_workers=num_workers)

start = time.time()
for X, y in train_iter:
    continue

print("%.2f sec" % (time.time() - start))
print("-----------------------")

if __name__ == "__main__":
    pass
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文将介绍如何使用softmax回归对Fashion-MNIST图像数据集进行预测。 Fashion-MNIST是一个替代MNIST手写数字集的图像数据集,用于训练和测试机器学习模型。它包含了10个类别的70,000张灰度图像,每个图像的大小为28x28像素。这些图像涵盖了从衣服、鞋子到手提包等各种物品。 为了使用softmax回归对Fashion-MNIST图像数据集进行预测,我们需要完成以下步骤: 1.加载Fashion-MNIST数据集 首先,我们需要下载并加载Fashion-MNIST数据集。可以使用以下代码块下载和加载数据集: ``` import tensorflow as tf from tensorflow import keras (x_train, y_train), (x_test, y_test) = keras.datasets.fashion_mnist.load_data() ``` 2.预处理数据集 接下来,我们需要对数据集进行预处理。我们需要将每个图像的像素值缩放到0到1之间,并将标签转换为独热编码。可以使用以下代码块完成预处理: ``` x_train = x_train.astype('float32') / 255.0 x_test = x_test.astype('float32') / 255.0 y_train = keras.utils.to_categorical(y_train) y_test = keras.utils.to_categorical(y_test) ``` 3.构建模型 接下来,我们需要构建一个softmax回归模型。我们可以使用一个全连接层作为模型的唯一层,并将softmax函数应用于输出。可以使用以下代码块构建模型: ``` model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(10, activation='softmax') ]) ``` 4.编译模型 接下来,我们需要编译模型。我们可以使用categorical_crossentropy作为损失函数,并使用adam优化器进行优化。可以使用以下代码块编译模型: ``` model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) ``` 5.训练模型 接下来,我们需要训练模型。我们可以使用fit方法来训练模型,并指定训练数据、批量大小、训练迭代次数和验证数据。可以使用以下代码块训练模型: ``` model.fit(x_train, y_train, batch_size=128, epochs=10, validation_data=(x_test, y_test)) ``` 6.评估模型 最后,我们需要评估模型。我们可以使用evaluate方法来评估模型,并指定测试数据。可以使用以下代码块评估模型: ``` loss, accuracy = model.evaluate(x_test, y_test) print('Test accuracy:', accuracy) ``` 完整代码如下: ``` import tensorflow as tf from tensorflow import keras (x_train, y_train), (x_test, y_test) = keras.datasets.fashion_mnist.load_data() x_train = x_train.astype('float32') / 255.0 x_test = x_test.astype('float32') / 255.0 y_train = keras.utils.to_categorical(y_train) y_test = keras.utils.to_categorical(y_test) model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(10, activation='softmax') ]) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(x_train, y_train, batch_size=128, epochs=10, validation_data=(x_test, y_test)) loss, accuracy = model.evaluate(x_test, y_test) print('Test accuracy:', accuracy) ``` 通过以上步骤,我们就可以使用softmax回归对Fashion-MNIST图像数据集进行预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值