# `DomainCIFAR100`

### *class* capymoa.ocl.datasets.DomainCIFAR100[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/ocl/datasets/_vision.py#L120)

Bases: `_TorchVisionDownload`, `_BuiltInCIScenario`

Domain incremental CIFAR-100 variant with 20 classes per task.

This dataset has exactly 5 tasks. Each task contains one fine-grained class from
each CIFAR-100 superclass (20 classes per task), while labels are remapped to the 20
superclass IDs. For example, the “flowers” superclass contains various types of
flowers.

![DomainCIFAR100 task illustration.](_images/DomainCIFAR100.jpg)

Note that the groupings are subjective based on the original CIFAR-100’s coarse
labels.

**References:**

1. Krizhevsky, A. (2009). Learning Multiple Layers of Features from Tiny Images.

#### dataset_type[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/../../.venv/lib/python3.11/site-packages/torchvision/datasets/cifar.py#L146)

alias of `CIFAR100`

#### \_\_init_\_(shuffle_data: [bool](https://docs.python.org/3/builtins/functions.html#bool) = True, seed: [int](https://docs.python.org/3/builtins/functions.html#int) = 0, directory: [Path](https://docs.python.org/3/library/pathlib.html#pathlib.Path) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, auto_download: [bool](https://docs.python.org/3/builtins/functions.html#bool) = True, train_transform: [Callable](https://docs.python.org/3/library/collections.abc.html#collections.abc.Callable)[[[Any](https://docs.python.org/3/library/typing.html#typing.Any)], [Tensor](https://docs.pytorch.org/docs/stable/tensors.html#torch.Tensor)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None, test_transform: [Callable](https://docs.python.org/3/library/collections.abc.html#collections.abc.Callable)[[[Any](https://docs.python.org/3/library/typing.html#typing.Any)], [Tensor](https://docs.pytorch.org/docs/stable/tensors.html#torch.Tensor)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None, normalize_features: [bool](https://docs.python.org/3/builtins/functions.html#bool) = False)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/ocl/datasets/_vision.py#L176)

Create the DomainCIFAR100 scenario.

This scenario always uses 5 tasks and 20 superclass labels. Each task
contains one fine-grained class from each superclass.

* **Parameters:**
  * **shuffle_data** – If True, shuffles class order within each
    superclass before forming tasks, and shuffles samples within each
    task for training.
  * **seed** – Random seed for reproducible shuffling.
  * **directory** – Directory where CIFAR-100 is stored/downloaded.
  * **auto_download** – If True, downloads CIFAR-100 when missing.
  * **train_transform** – Optional transform applied to training images.
  * **test_transform** – Optional transform applied to test images.
  * **normalize_features** – If True, applies dataset normalization after
    the provided transforms.

#### test_loaders(batch_size: [int](https://docs.python.org/3/builtins/functions.html#int), \*\*kwargs: [Any](https://docs.python.org/3/library/typing.html#typing.Any)) → [Sequence](https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence)[[DataLoader](https://docs.pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader)[[tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[Tensor](https://docs.pytorch.org/docs/stable/tensors.html#torch.Tensor), [Tensor](https://docs.pytorch.org/docs/stable/tensors.html#torch.Tensor)]]][[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/ocl/datasets/_base.py#L258)

Get the training streams for the scenario.

* **Parameters:**
  * **batch_size** – Collects vectors in batches of this size.
  * **kwargs** – Additional keyword arguments to pass to the DataLoader.
* **Returns:**
  A data loader for each task.

#### train_loaders(batch_size: [int](https://docs.python.org/3/builtins/functions.html#int), shuffle: [bool](https://docs.python.org/3/builtins/functions.html#bool) = False, \*\*kwargs: [Any](https://docs.python.org/3/library/typing.html#typing.Any)) → [Sequence](https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence)[[DataLoader](https://docs.pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader)[[tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[Tensor](https://docs.pytorch.org/docs/stable/tensors.html#torch.Tensor), [Tensor](https://docs.pytorch.org/docs/stable/tensors.html#torch.Tensor)]]][[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/ocl/datasets/_base.py#L227)

Get the training streams for the scenario.

* The order of the tasks is fixed and does not change between iterations.
  The datasets themselves are shuffled in [`__init__()`](#capymoa.ocl.datasets.DomainCIFAR100.__init__) if shuffle_data
  is set to True. This is because the order of data is important in
  online learning since the learner can only see each example once.

* **Parameters:**
  * **batch_size** – Collects vectors in batches of this size.
  * **kwargs** – Additional keyword arguments to pass to the DataLoader.
* **Returns:**
  A data loader for each task.

#### classes *= ('aquatic_mammals', 'fish', 'flowers', 'food_containers', 'fruit_and_vegetables', 'household_electrical_devices', 'household_furniture', 'insects', 'large_carnivores', 'large_man-made_outdoor_things', 'large_natural_outdoor_scenes', 'large_omnivores_and_herbivores', 'medium_mammals', 'non-insect_invertebrates', 'people', 'reptiles', 'small_mammals', 'trees', 'vehicles_1', 'vehicles_2')*

The 20 superclasses of CIFAR-100, which are used as the labels in this scenario.

#### default_task_count *: [int](https://docs.python.org/3/builtins/functions.html#int)* *= 5*

The default number of tasks in the dataset.

#### default_test_transform *: Callable[[Any], Tensor] | [None](https://docs.python.org/3/builtins/constants.html#None)* *= ToTensor()*

The default transform to apply to the dataset.

#### default_train_transform *: Callable[[Any], Tensor] | [None](https://docs.python.org/3/builtins/constants.html#None)* *= ToTensor()*

The default transform to apply to the dataset.

#### mean *: Sequence[[float](https://docs.python.org/3/builtins/functions.html#float)] | [None](https://docs.python.org/3/builtins/constants.html#None)* *= (0.507, 0.487, 0.441)*

The mean of the features in the dataset used for normalization.

#### num_classes *: [int](https://docs.python.org/3/builtins/functions.html#int)* *= 20*

The number of classes in the dataset.

#### schema *: [Schema](capymoa.stream.Schema.md#capymoa.stream.Schema)*

A schema describing the format of the data.

#### shape *: Sequence[[int](https://docs.python.org/3/builtins/functions.html#int)]* *= (3, 32, 32)*

The shape of each input example.

#### std *: Sequence[[float](https://docs.python.org/3/builtins/functions.html#float)] | [None](https://docs.python.org/3/builtins/constants.html#None)* *= (0.267, 0.256, 0.276)*

The standard deviation of the features in the dataset used for normalization.

#### stream *: [Stream](capymoa.stream.Stream.md#capymoa.stream.Stream)[[LabeledInstance](capymoa.core.LabeledInstance.md#capymoa.core.LabeledInstance)]*

Stream containing each task in sequence.

#### task_mask *: Tensor*

A mask for the output for each task of shape (num_tasks, num_classes)

#### task_schedule *: Sequence[[set](https://docs.python.org/3/builtins/stdtypes.html#set)[[int](https://docs.python.org/3/builtins/functions.html#int)]]*

A sequence of sets containing the classes for each task.

In online continual learning your learner may not have access to this
attribute. It is provided for evaluation and debugging.
