scheduler.step() err.update(loss.item()) grd.update(grad_norm) writer.add_scalar(err.title + '/steps', loss.item(), step) writer.add_scalar(grd.title + '/steps', grad_norm, step) loader.set_description('Epoch %d %s %s' % (epoch, err, grd)) model.eval() for i, lr in enumerate(scheduler.get_lr()): writer.add_scalar('LR/%d' % i, lr, epoch) err.summary(writer, epoch) grd.summary(writer, epoch) err = AverageMeter('Loss/test') loader = DataLoaderCuda(test, batch_size=bptt, drop_last=True) hidden = model.step_init(batch_size) with torch.no_grad(): for inputs, targets in loader: output, hidden = model.step_forward(inputs, hidden) loss = criterion(output, targets.view(-1))
grd.update(grad_norm) writer.add_scalar(grd.title + '/steps', grad_norm, step) train.set_description('Epoch %d %s %s %s %s' % (epoch, err, ent, grd, rwd)) if step % 200 == 0: train.close() break model.eval() for i, lr in enumerate(scheduler.get_lr()): writer.add_scalar('LR/%d' % i, lr, epoch) err.summary(writer, epoch) ent.summary(writer, epoch) grd.summary(writer, epoch) rwd.summary(writer, epoch) err = AverageMeter('Loss/test') ent = AverageMeter('Entropy/test') cer = AverageCER(blank, space) wer = AverageWER(blank, space) with torch.no_grad(): for xs, ys, xn, yn in test: zs, xs, xn = model(xs, ys.t(), xn, yn)