pred_valid = neural_net.forward(x_valid) valid_error = mse_loss(pred_valid, target_valid) + regularization * l2_norm valid_over_epoch.append(valid_error.data[0]) for param in neural_net.parameters(): param.grad *= alpha loss.backward() for param in neural_net.parameters(): param.data -= learning_rate * param.grad.data if epoch % animator.EPOCHS_PER_FRAME == 0: print('Epoch {:4d}, loss: {:6.5f}, validation error: {:6.5f}'.format( epoch, loss.data[0], valid_error.data[0])) pred_train_list = pp.revert(pred_train).data.tolist() pred_valid_list = pp.revert(pred_valid).data.tolist() animator.add_epoch(epoch, pred_train_list, pred_valid_list) set_global_min, stop_flag = early_stopper.check_for_early_stop( valid_error.data[0]) dma_over_epoch.append(early_stopper.dma) if set_global_min: for optimal, param in zip(optimal_params, neural_net.parameters()): optimal = param if stop_flag in EarlyStop.BREAK_FLAGS: for optimal, param in zip(optimal_params, neural_net.parameters()): param = optimal print('Epoch {:4d}, loss: {:6.5f}, validation error: {:6.5f}'.format(