ncalab.models.applications.classification ========================================= .. py:module:: ncalab.models.applications.classification Submodules ---------- .. toctree:: :maxdepth: 1 /autoapi/ncalab/models/applications/classification/classificationNCA/index /autoapi/ncalab/models/applications/classification/classificationNCAhead/index Classes ------- .. autoapisummary:: ncalab.models.applications.classification.ClassificationNCAModel ncalab.models.applications.classification.ClassificationNCAHead Package Contents ---------------- .. py:class:: ClassificationNCAModel(device: torch.device, num_image_channels: int, num_hidden_channels: int, num_classes: int, fire_rate: float = 0.8, hidden_size: int = 128, use_alive_mask: bool = False, pixel_wise_loss: bool = False, num_learned_filters: int = 2, filter_padding: Literal['zero', 'reflect', 'replicate', 'circular'] = 'reflect', use_laplace: bool = False, kernel_size: int = 3, pad_noise: bool = False, use_temporal_encoding: bool = False, use_classifier: bool = True, class_names: Optional[List[str]] = None, avg_pool_size: int = 8, lambda_hidden: float = 0, **kwargs) Bases: :py:obj:`ncalab.models.basicNCA.AbstractNCAModel` Abstract base class for NCA models. BasicNCAModel is a composition of an NCA backbone model (called "rule"), and an (optional) head module for downstream tasks. :param device: Pytorch device descriptor. :param num_image_channels: _description_ :param num_hidden_channels: _description_ :param num_classes: _description_ :param fire_rate: Fire rate for stochastic weight update. Defaults to 0.8. :param hidden_size: Number of neurons in hidden layer. Defaults to 128. :param use_alive_mask: Whether to use alive masking (channel 3) during training. Defaults to False. :param pixel_wise_loss: Whether a prediction per pixel is desired, like in self-classifying MNIST. Defaults to False. :param num_learned_filters: Number of learned filters. If zero, use two sobel filters instead. Defaults to 2. :param filter_padding: Padding type to use. Might affect reliance on spatial cues. Defaults to "circular". :param pad_noise: Whether to pad input image tensor with noise in hidden / output channels .. py:attribute:: _num_classes .. py:attribute:: pixel_wise_loss :value: False .. py:attribute:: use_classifier :value: True .. py:attribute:: avg_pool_size :value: 8 .. py:attribute:: lambda_hidden :value: 0 .. py:attribute:: metrics .. py:attribute:: focal_loss .. py:property:: num_classes :type: int .. py:method:: classify(image: torch.Tensor, steps: int = 100, reduce: bool = False) -> torch.Tensor Predict classification for an input image. :param image: Input image. :param steps: Inference steps. Defaults to 100. :param reduce: Return a single softmax probability. Defaults to False. :returns: Single class index or vector of logits. .. py:method:: loss(pred: ncalab.prediction.Prediction, label: torch.Tensor) -> Dict[str, torch.Tensor] Return the classification loss. :param pred: Prediction. :param label: Ground truth. :returns: Dictionary of identifiers mapped to computed losses. .. py:method:: post_prediction(prediction: ncalab.prediction.Prediction) -> ncalab.prediction.Prediction .. py:class:: ClassificationNCAHead(num_hidden_channels: int, num_classes: int, device: torch.device, avg_pool_size: int, hidden_size: int = 32) Bases: :py:obj:`ncalab.models.basicNCA.abstractNCAhead.AbstractNCAHead` Base class for all neural network modules. Your models should also subclass this class. Modules can also contain other Modules, allowing them to be nested in a tree structure. You can assign the submodules as regular attributes:: import torch.nn as nn import torch.nn.functional as F class Model(nn.Module): def __init__(self) -> None: super().__init__() self.conv1 = nn.Conv2d(1, 20, 5) self.conv2 = nn.Conv2d(20, 20, 5) def forward(self, x): x = F.relu(self.conv1(x)) return F.relu(self.conv2(x)) Submodules assigned in this way will be registered, and will also have their parameters converted when you call :meth:`to`, etc. .. note:: As per the example above, an ``__init__()`` call to the parent class must be made before assignment on the child. :ivar training: Boolean represents whether this module is in training or evaluation mode. :vartype training: bool Initialize internal Module state, shared by both nn.Module and ScriptModule. .. py:attribute:: num_hidden_channels .. py:attribute:: num_classes .. py:attribute:: device .. py:attribute:: avg_pool_size .. py:attribute:: classifier .. py:method:: forward(x) :param x: Input tensor :type x: torch.Tensor :returns: NotImplemented, subclasses are required to implement this method. .. py:method:: freeze(freeze_last: bool = False) Freeze head weights. :param freeze_last: Whether to freeze the last layer (if applicable), defaults to True :type freeze_last: bool, optional :returns: NotImplemented, subclasses are required to implement this method.