CIFAR-100 を読み込む

データセット公開ページには"I won't waste space describing them here"とそっけない記述があるのみだったので調べながら読み込んでみた。

参考にしたページはココココ
CIFAR-100 python versionはダウンロードして解凍しておく。
読み込んだあとにファイル名とタグを一覧表示している。

import os, pickle


class ReadCifar100:
    topdirname = 'cifar-100-python'
    def __init__(self, extractedpath):
        dirpath = os.path.join(extractedpath, ReadCifar100.topdirname)
        with open(os.path.join(dirpath, 'meta'), 'rb') as fp:
            self.meta = pickle.load(fp)
            self.fine_label_names = self.meta['fine_label_names']
            self.coarse_label_names = self.meta['coarse_label_names']
        with open(os.path.join(dirpath, 'train'), 'rb') as fp:
            self.train = pickle.load(fp, encoding='latin-1')
            self.traincount = self.train['data'].shape[0]
        with open(os.path.join(dirpath, 'test'), 'rb') as fp:
            self.test = pickle.load(fp, encoding='latin-1')
            self.testcount = self.test['data'].shape[0]

if __name__ == '__main__':
    cifar = ReadCifar100('ファイル解凍先のパス')
    for i in range(cifar.traincount):
        filename = cifar.train['filenames'][i]
        coarse_label = cifar.train['coarse_labels'][i]
        fine_label = cifar.train['fine_labels'][i]
        print(filename, cifar.coarse_label_names[coarse_label], cifar.fine_label_names[fine_label])
    for i in range(cifar.testcount):
        filename = cifar.test['filenames'][i]
        coarse_label = cifar.test['coarse_labels'][i]
        fine_label = cifar.test['fine_labels'][i]
        print(filename, cifar.coarse_label_names[coarse_label], cifar.fine_label_names[fine_label])
    print(cifar.traincount, cifar.testcount)

コメント

このブログの人気の投稿

Python SQLite スレッド間でコネクションの使いまわしは出来ない

slackでgeneralの投稿を全削除する

Google location history(JSON形式)をCSVファイルにする