TestTaskAware#

class capymoa.ocl.base.TestTaskAware[source]#

Bases: object

Interface for learners that are aware of the task during evaluation.

Knowing the task during inference greatly simplifies the learning problem. When using this interface your problem becomes a task-incremental online continual learning problem.

>>> from capymoa.classifier import NoChange
>>> from capymoa.ocl.datasets import TinySplitMNIST
>>> from capymoa.ocl.base import TrainTaskAware, TestTaskAware
>>> from capymoa.ocl.evaluation import ocl_train_eval_loop
>>> class MyTaskAware(TestTaskAware, TrainTaskAware, NoChange):
...     def on_train_task(self, train_task_id: int):
...         print(f"Training task {train_task_id}")
...
...     def on_test_task(self, test_task_id: int):
...         print(f"Testing task {test_task_id}")
>>> scenario = TinySplitMNIST()
>>> learner = MyTaskAware(scenario.schema)
>>> ocl_train_eval_loop(learner, scenario.train_loaders(32), scenario.test_loaders(32))
Training task 0
Testing task 0
Testing task 1
Testing task 2
Testing task 3
Testing task 4
Training task 1
Testing task 0
Testing task 1
...
on_test_task(task_id: int)[source]#

Called when testing on a task starts.