model = model_util.load(model_to_load, filepath)

        #To prevent any possible corruption between cycles, just reload and
        #reprocess the data, including resorting
        data, classes = emnist.get(balanced_set)
        x, y, val_x, val_y = data_util.validation_split(data['x'], data['y'], validation_split)
        x, y = emnist.mean_sort(x, y, classes, task_count)

        #Convert test data to be used in model
        val_x, val_y = data_util.prep(val_x, val_y, classes)
        test_x, test_y = data_util.prep(data['test_x'], data['test_y'], classes)

        #Set up syllabus which handles splitting into tasks
        syllabus = Syllabus(
            training_data =(x,y),
            epochs=epochs,
            task_amount=task_count,
            weightings=distribution,
        )

        #Until we have finished training
        while not syllabus.training_complete():
            #Get our next task and prep it
            x, y = syllabus.next()
            x, y = data_util.prep(x, y, classes)
            print("epoch : {0}\ttask: {1}".format(syllabus.current_epoch, syllabus.current_task_index))

            model.fit(
                x=x,
                y=y,
                batch_size=batch_size,
                epochs=1,