Я разделяю данные, используя PyTorch's data.random_split
train_idx, validate_idx, test_idx = data.random_split(X,
[num_training_sample, num_validation_sample, num_testing_sample])
, который возвращает индексы для случайного разделения. Затем я делаю следующее
train = [X[train_idx.indices], y[train_idx.indices]]
validate = [X[validate_idx.indices], y[validate_idx.indices]]
test = [X[test_idx.indices], y[test_idx.indices]]
Несмотря на то, что они разделяются с общим соотношением 6: 2: 2, но выборка между классами не одинакова. Когда я распечатал счет, он показывает
{0: 4251, 1: 4168, 2: 4223, 3: 4192, 4: 4180, 5: 4133, 6: 4226, 7: 4249, 8: 4238, 9: 4140}
Теперь я могу перебирать сэмплы и делать сбалансированные подвыборки, но мне было интересно, есть ли способ в PyTorch ( или Numpy), чтобы сделать это эффективно.