
 Learner.fit_one_cycle = fit_one_cycle
 Learner.lr_find = lr_find
 Learner.to_fp16 = to_fp16
 Learner.to_fp32 = to_fp32
 Learner.mixup = mixup
 Learner.fit_fc = fit_fc

 class ShowGraph(LearnerCallback):
 "Update a graph of learner stats and metrics after each epoch."
 def on_epoch_end(self, n_epochs:int, last_metrics:MetricsList, **kwargs)>bool:
 "If we have `last_metrics` plot them in our pbar graph"
 if last_metrics is not None and last_metrics[0] is not None:
 rec = self.learn.recorder
 iters = range_of(rec.losses)
 val_iter = np.array(rec.nb_batches).cumsum()
 x_bounds = (0, (n_epochs  len(rec.nb_batches)) * rec.nb_batches[1] + len(rec.losses))
 y_bounds = (0, max((max(Tensor(rec.losses)), max(Tensor(rec.val_losses)))))
 rec.pbar.update_graph([(iters, rec.losses), (val_iter, rec.val_losses)], x_bounds, y_bounds)
 return {}
