运行代码后会得到两个文件夹,一个是训练集(50000张图片),一个是测试集(10000张图片),这两个文件夹下都会有100个子文件夹。
import os
from skimage import io
import torchvision as tv
import numpy as np
import torch
def Cifar100(root):
character_train = [[] for i in range(100)]
character_test = [[] for i in range(100)]
train_set = tv.datasets.CIFAR100(root, train=True, download=True)
test_set = tv.datasets.CIFAR100(root, train=False, download=True)
trainset = []
testset = []
for i, (X, Y) in enumerate(train_set): # 将train_set的数据和label读入列表
trainset.append(list((np.array(X), np.array(Y))))
for i, (X, Y) in enumerate(test_set): # 将test_set的数据和label读入列表
testset.append(list((np.array(X), np.array(Y))))
for X, Y in trainset:
character_train[Y].append(X) # 32*32*3
for X, Y in testset:
character_test[Y].append(X) # 32*32*3
os.mkdir(os.path.join(root, 'train'))
os.mkdir(os.path.join(root, 'test'))
for i, per_class in enumerate(character_train):
character_path = os.path.join(root, 'train', 'character_' + str(i))
os.mkdir(character_path)
for j, img in enumerate(per_class):
img_path = character_path + '/' + str(j) + ".jpg"
io.imsave(img_path, img)
for i, per_class in enumerate(character_test):
character_path = os.path.join(root, 'test', 'character_' + str(i))
os.mkdir(character_path)
for j, img in enumerate(per_class):
img_path = character_path + '/' + str(j) + ".jpg"
io.imsave(img_path, img)
if __name__ == '__main__':
root = '/home/jim/project/pytorch/pytorch-cifar100-master/cifar100'
Cifar100(root)
参考:https://blog.csdn.net/Xie_learning/article/details/89365305