def train(engine: Engine, ctx: Context): datas, targets = ctx.inputs ctx.datas, ctx.targets = datas.to(ctx.device), targets.to(ctx.device) ctx.outputs = ctx.net(ctx.datas) ctx.loss = ctx.criterion(ctx.outputs, ctx.targets) ctx.optimizer.zero_grad() ctx.loss.backward() ctx.optimizer.step()
def debug_train(engine: Engine, ctx: Context): datas, targets = ctx.inputs ctx.datas, ctx.targets = datas.to(ctx.device), targets.to(ctx.device) ctx.timer.mark("to device") ctx.outputs = ctx.net(ctx.datas) ctx.timer.mark("forward") ctx.loss = ctx.criterion(ctx.outputs, ctx.targets) ctx.timer.mark("criterion") ctx.optimizer.zero_grad() ctx.loss.backward() ctx.timer.mark("backward") ctx.optimizer.step() ctx.timer.mark("step")
def validation(engine: Engine, ctx: Context): datas, targets = ctx.inputs ctx.datas, ctx.targets = datas.to(ctx.device), targets.to(ctx.device) ctx.outputs = ctx.net(ctx.datas) ctx.loss = ctx.criterion(ctx.outputs, ctx.targets)