Выполняйте оценку без остановки основного тренировочного процесса в Pytorch - PullRequest
0 голосов
/ 06 августа 2020

Обычно мы обучаем модель и оцениваем ее в одной и той же процедуре.

...
for epoch_idx range(max_epoch):
    net.train()
    # do training with batchsize = N
    for train_img, label in train_loader:
        ...
        pred = net(train_img)
        loss = criterion(pred, label)
        optim.zero_grad()
        loss.backward()
        optim.step()
   # eval
   if epoch_idx % eval_step == 0:
       net.eval()
       # do evaluation with batchsize =1

Однако для довольно большого количества задач, которые предпочитают обрезанные изображения с фиксированным размером при выполнении обучения, но когда дело доходит до При оценке каждое изображение различается по размеру, поэтому размер пакета должен быть 1.

В моем случае время оценки примерно в 10 раз больше, чем при обучении, что замедляет всю процедуру. Модель большая, и я не хочу хранить ее для каждой эпохи.

Интересно, возможно ли это: создать новый поток и выполнить оценку, чтобы основной поток продолжал трианирование без приостановки.

Я не знаком с мультиобработкой, поэтому любая помощь будет приветствоваться.

...