minerva.models.nets.imu_transformer

Classes

IMUCNN

Simple pipeline for supervised models.

IMUTransformerEncoder

Simple pipeline for supervised models.

_IMUTransformerEncoder

input_shape: (tuple) shape of the input data

Module Contents

class minerva.models.nets.imu_transformer.IMUCNN(input_shape=(6, 60), hidden_dim=64, num_classes=6, dropout_factor=0.1, learning_rate=0.001)

Bases: minerva.models.nets.base.SimpleSupervisedModel

Simple pipeline for supervised models.

This class implements a very common deep learning pipeline, which is composed by the following steps:

  1. Make a forward pass with the input data on the backbone model;

  2. Make a forward pass with the input data on the fc model;

  3. Compute the loss between the output and the label data;

  4. Optimize the model (backbone and FC) parameters with respect to the loss.

This reduces the code duplication for autoencoder models, and makes it easier to implement new models by only changing the backbone model. More complex models, that does not follow this pipeline, should not inherit from this class. Note that, for this class the input data is a tuple of tensors, where the first tensor is the input data and the second tensor is the mask or label.

Initialize the model with the backbone, fc, loss function and metrics. Metrics are used to evaluate the model during training, validation, testing or prediction. It will be logged using lightning logger at the end of each epoch. Metrics should implement the torchmetrics.Metric interface.

Parameters

backbonetorch.nn.Module

The backbone model. Usually the encoder/decoder part of the model.

fctorch.nn.Module

The fully connected model, usually used to classification tasks. Use torch.nn.Identity() if no FC model is needed.

loss_fntorch.nn.Module

The function used to compute the loss.

learning_ratefloat, optional

The learning rate to Adam optimizer, by default 1e-3

flattenbool, optional

If True the input data will be flattened before passing through the fc model, by default True

train_metricsDict[str, Metric], optional

The metrics to be used during training, by default None

val_metricsDict[str, Metric], optional

The metrics to be used during validation, by default None

test_metricsDict[str, Metric], optional

The metrics to be used during testing, by default None

predict_metricsDict[str, Metric], optional

The metrics to be used during prediction, by default None

_calculate_fc_input_features(backbone, input_shape)
Parameters:
  • backbone (torch.nn.Module)

  • input_shape (Tuple[int, int])

Return type:

int

_create_backbone(input_shape, hidden_dim, dropout_factor)
_create_fc(input_features, hidden_dim, num_classes)
Parameters:
  • input_shape (tuple)

  • hidden_dim (int)

  • num_classes (int)

  • dropout_factor (float)

  • learning_rate (float)

class minerva.models.nets.imu_transformer.IMUTransformerEncoder(input_shape=(6, 60), transformer_dim=64, encode_position=True, nhead=8, dim_feedforward=128, transformer_dropout=0.1, transformer_activation='gelu', num_encoder_layers=6, num_classes=6, learning_rate=0.001)

Bases: minerva.models.nets.base.SimpleSupervisedModel

Simple pipeline for supervised models.

This class implements a very common deep learning pipeline, which is composed by the following steps:

  1. Make a forward pass with the input data on the backbone model;

  2. Make a forward pass with the input data on the fc model;

  3. Compute the loss between the output and the label data;

  4. Optimize the model (backbone and FC) parameters with respect to the loss.

This reduces the code duplication for autoencoder models, and makes it easier to implement new models by only changing the backbone model. More complex models, that does not follow this pipeline, should not inherit from this class. Note that, for this class the input data is a tuple of tensors, where the first tensor is the input data and the second tensor is the mask or label.

Initialize the model with the backbone, fc, loss function and metrics. Metrics are used to evaluate the model during training, validation, testing or prediction. It will be logged using lightning logger at the end of each epoch. Metrics should implement the torchmetrics.Metric interface.

Parameters

backbonetorch.nn.Module

The backbone model. Usually the encoder/decoder part of the model.

fctorch.nn.Module

The fully connected model, usually used to classification tasks. Use torch.nn.Identity() if no FC model is needed.

loss_fntorch.nn.Module

The function used to compute the loss.

learning_ratefloat, optional

The learning rate to Adam optimizer, by default 1e-3

flattenbool, optional

If True the input data will be flattened before passing through the fc model, by default True

train_metricsDict[str, Metric], optional

The metrics to be used during training, by default None

val_metricsDict[str, Metric], optional

The metrics to be used during validation, by default None

test_metricsDict[str, Metric], optional

The metrics to be used during testing, by default None

predict_metricsDict[str, Metric], optional

The metrics to be used during prediction, by default None

_create_backbone(input_shape, transformer_dim, encode_position, nhead, dim_feedforward, transformer_dropout, transformer_activation, num_encoder_layers)
_create_fc(transform_dim, num_classes)
Parameters:
  • input_shape (tuple)

  • transformer_dim (int)

  • encode_position (bool)

  • nhead (int)

  • dim_feedforward (int)

  • transformer_dropout (float)

  • transformer_activation (str)

  • num_encoder_layers (int)

  • num_classes (int)

  • learning_rate (float)

class minerva.models.nets.imu_transformer._IMUTransformerEncoder(input_shape=(6, 60), transformer_dim=64, encode_position=True, nhead=8, dim_feedforward=128, transformer_dropout=0.1, transformer_activation='gelu', num_encoder_layers=6)

Bases: torch.nn.Module

input_shape: (tuple) shape of the input data transformer_dim: (int) dimension of the transformer encode_position: (bool) whether to encode position or not nhead: (int) number of attention heads dim_feedforward: (int) dimension of the feedforward network transformer_dropout: (float) dropout rate for the transformer transformer_activation: (str) activation function for the transformer num_encoder_layers: (int) number of transformer encoder layers num_classes: (int) number of output classes

Parameters:
  • input_shape (tuple)

  • transformer_dim (int)

  • encode_position (bool)

  • nhead (int)

  • dim_feedforward (int)

  • transformer_dropout (float)

  • transformer_activation (str)

  • num_encoder_layers (int)

forward(x)

Forward

Parameters

x_type_

A tensor of shape (B, C, S) with B = batch size, C = channels, S = sequence length