in train.py [0:0]
def val(epoch, data_loader, model, log_path, plotter):
losses = {}
iter_data_loader = iter(data_loader)
for iteration in range(1, min(51, len(data_loader))):
t_losses, output_image = model(
iter_data_loader, isval=True, num_steps=1
)
for l in t_losses.keys():
if l in losses.keys():
losses[l] = t_losses[l].cpu().mean().item() + losses[l]
else:
losses[l] = t_losses[l].cpu().mean().item()
if iteration % 100 == 0 or iteration == 1:
for add_im in output_image.keys():
plotter.add_image(
"Image_val/%d_%s" % (iteration, add_im),
torchvision.utils.make_grid(
output_image[add_im][0:8, :, :, :].cpu().data,
normalize=("Depth" in add_im),
),
epoch,
)
if SIGNAL_RECEIVED:
trigger_job_requeue()
raise SystemExit
if iteration % 1 == 0:
str_to_print = "Val: Epoch {}: {}/{} with ".format(
epoch, iteration, len(data_loader)
)
for l in losses.keys():
str_to_print += " %s : %0.4f | " % (
l,
losses[l] / float(iteration),
)
print(str_to_print, flush=True)
for l in t_losses.keys():
plotter.add_scalars(
"%s_iter" % l,
{"val": t_losses[l].cpu().mean().detach().item()},
epoch * 50 + iteration,
)
return {l: losses[l] / float(iteration) for l in losses.keys()}