cifar100 small images classification dataset import os import numpy as np from keras import backend from keras apiexport import kerasexport from keras datasets cifar import loadbatch from keras utils fileutils import getfile kerasexportkeras datasets cifar100 loaddata def loaddatalabelmodefine if labelmode not in fine coarse raise valueerror labelmode must be one of fine coarse freceived labelmodelabelmode dirname cifar100python origin https www cs toronto edukrizcifar100python tar gz path getfile fnamedirname originorigin untartrue filehash noqa e501 85cd44d02ba6437773c5bbd22e183051d648de2e7d6b014e1ef29b855ba677a7 fpath os path joinpath train xtrain ytrain loadbatchfpath labelkeylabelmode labels fpath os path joinpath test xtest ytest loadbatchfpath labelkeylabelmode labels ytrain np reshapeytrain lenytrain 1 ytest np reshapeytest lenytest 1 if backend imagedataformat channelslast xtrain xtrain transpose0 2 3 1 xtest xtest transpose0 2 3 1 return xtrain ytrain xtest ytest loads the cifar100 dataset this is a dataset of 50 000 32x32 color training images and 10 000 test images labeled over 100 fine grained classes that are grouped into 20 coarse grained classes see more info at the cifar homepage https www cs toronto edu kriz cifar html args label_mode one of fine coarse if it is fine the category labels are the fine grained labels and if it is coarse the output labels are the coarse grained superclasses returns tuple of numpy arrays x_train y_train x_test y_test x_train uint8 numpy array of grayscale image data with shapes 50000 32 32 3 containing the training data pixel values range from 0 to 255 y_train uint8 numpy array of labels integers in range 0 99 with shape 50000 1 for the training data x_test uint8 numpy array of grayscale image data with shapes 10000 32 32 3 containing the test data pixel values range from 0 to 255 y_test uint8 numpy array of labels integers in range 0 99 with shape 10000 1 for the test data example python x_train y_train x_test y_test keras datasets cifar100 load_data assert x_train shape 50000 32 32 3 assert x_test shape 10000 32 32 3 assert y_train shape 50000 1 assert y_test shape 10000 1 noqa e501
import os

import numpy as np

from keras import backend
from keras.api_export import keras_export
from keras.datasets.cifar import load_batch
from keras.utils.file_utils import get_file


@keras_export("keras.datasets.cifar100.load_data")
def load_data(label_mode="fine"):
    
    if label_mode not in ["fine", "coarse"]:
        raise ValueError(
            '`label_mode` must be one of `"fine"`, `"coarse"`. '
            f"Received: label_mode={label_mode}."
        )

    dirname = "cifar-100-python"
    origin = "https://www.cs.toronto.edu/~kriz/cifar-100-python.tar.gz"
    path = get_file(
        fname=dirname,
        origin=origin,
        untar=True,
        file_hash=(  
            "85cd44d02ba6437773c5bbd22e183051d648de2e7d6b014e1ef29b855ba677a7"
        ),
    )

    fpath = os.path.join(path, "train")
    x_train, y_train = load_batch(fpath, label_key=label_mode + "_labels")

    fpath = os.path.join(path, "test")
    x_test, y_test = load_batch(fpath, label_key=label_mode + "_labels")

    y_train = np.reshape(y_train, (len(y_train), 1))
    y_test = np.reshape(y_test, (len(y_test), 1))

    if backend.image_data_format() == "channels_last":
        x_train = x_train.transpose(0, 2, 3, 1)
        x_test = x_test.transpose(0, 2, 3, 1)

    return (x_train, y_train), (x_test, y_test)