Как происходит увеличение количества данных в каждую эпоху? - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в PyTorch и хочу применять увеличение данных к наборам данных в каждую эпоху. I

train_transform = Compose([
    transforms.RandomHorizontalFlip(p=0.5),
    transforms.RandomCrop(32, padding=4),
    transforms.ToTensor(),
    transforms.Normalize([0, 0, 0], [1, 1, 1])
])

test_transform = Compose([
    transforms.ToTensor(),
    transforms.Normalize([0, 0, 0], [1, 1, 1])
])

cifar10_train = CIFAR10(root = "/data", train=True, download = True, transform=train_transform)
train_loader = torch.utils.data.DataLoader(cifar10_train, batch_size=128, shuffle=True)

cifar10_test = CIFAR10(root = "/data", train=False, download = True, transform=test_transform)
test_loader = torch.utils.data.DataLoader(cifar10_test, batch_size=128, shuffle=True)

Я получил код из онлайн-учебника. Итак, насколько я понимаю, train_transform и test_transform - это код расширения, в то время как cifar10_train и cifar10_test - это то место, где данные загружаются, а увеличение выполняется одновременно. Означает ли это, что увеличение данных выполняется только один раз перед тренировкой? Что, если я хочу увеличивать данные для каждой эпохи.

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Думаю, в вашем коде есть недопонимание. cifar10_train и cifar10_test фактически загружают набор данных в python (эти данные не дополняются и являются необработанными данными), затем данные проходят преобразования. В большинстве случаев обучающий набор - это то место, где выполняется увеличение данных, а набор для тестирования не дополняется, потому что он должен реплицировать реальные данные. Преобразования (train_transform и test_transforms) - это то, что решает, как данные дополняются, нормализуются и конвертируются в тензоры PyTorch, вы можете рассматривать это как набор руководящих принципов / правил для набора данных, которому следует следовать. Как упоминалось ранее, обучающий набор только расширяется, поэтому train_transform имеет RandomHorizontalFlip и RandomCrop (который выполняет увеличение) и почему test_transforms не имеет RandomHorizontalFlip и RandomCrop. Загрузчики (train_loader и test_loader) - это то, что разделяет данные на пакеты (группы данных) и применяет преобразования к набору данных cifar10.

0 голосов
/ 20 июня 2020

Ниже приводится приблизительный поток операций:

  1. Прочитать 128 примеров из файловой системы.
  2. Пакетный их (ie сделать пакет примеров ) и примените преобразования к пакету.
  3. Передайте пакет в сеть.

Следовательно, преобразования применяются к каждому пакету перед его передачей в модель, независимо от эпоха

...