首页 > 解决方案 > 如何在保持 EMNIST 数据集平衡的情况下进行拆分

问题描述

这是我当前的代码。

affine = transforms.RandomAffine([-15, 15], scale=(0.8, 1.2))  # 回転とリサイズ
normalize = transforms.Normalize((0.0, 0.0, 0.0), (1.0, 1.0, 1.0))  # 平均値を0、標準偏差を1に

to_tensor = transforms.ToTensor()

transform_hyouji=transforms.Compose([to_tensor,affine])

emnist_data = EMNIST(root='./EMNIST_1st', split=splits[-2], 
                       train=False,download=True,
                       transform=torchvision.transforms.ToTensor())

splits = ('byclass', 'bymerge', 'balanced', 'letters', 'digits', 'mnist')

EMNIST_train = EMNIST(root='./EMNIST_1st', split=splits[-2], 
                       train=True,download=True,
                       transform=torchvision.transforms.ToTensor())

EMNIST_test = EMNIST(root='./EMNIST_1st', split=splits[-2], 
                       train=False,download=True,
                       transform=torchvision.transforms.ToTensor())

但是,我认为这个数据集的大小是

EMNIST_train.__len__(), EMNIST_test.__len__()
#(240000, 40000)

我想在保持平衡大小的情况下改变这个大小,即每个标签的速率几乎相同。

我认为这个问题(如何改变 Pytorch 数据集的大小?)很有帮助,但我认为这并不能保持标签平衡。

如果你告诉我怎么做,我将不胜感激。

标签: pythonpytorchtorchvision

解决方案


推荐阅读