Skip to content

MCDCNNClassifierTorch

MCDCNNClassifierTorch

class MCDCNNClassifierTorch(n_epochs: int = 120, batch_size: int = 16, kernel_sizes: tuple[int, ...] = (5, 5), pool_size: int = 2, filter_sizes: tuple[int, ...] = (8, 8), dense_units: int = 732, conv_padding: str | None = 'same', pool_padding: str | None = 'same', activation: str | None | Callable = None, activation_hidden: str | Callable = 'ReLU', use_bias: bool = True, criterion: str | None | Callable = 'CrossEntropyLoss', criterion_kwargs: dict | None = None, optim: str | None | Callable = None, optim_kwargs: dict | None = None, callbacks: str | tuple[str, ...] | None = None, callback_kwargs: dict | None = None, metrics: None | str | Callable | tuple[str | Callable, ...] = None, lr: float = 0.01, verbose: bool = False, random_state: int = 0)[source]

Multi Channel Deep Convolutional Neural Classifier in PyTorch, adopted from [1].

Adapted from the implementation of Fawaz et. al https://github.com/hfawaz/dl-4-tsc/blob/master/classifiers/mcdcnn.py

Parameters:
n_epochsint, optional (default=120)

The number of epochs to train the model.

batch_sizeint, optional (default=16)

The number of samples per gradient update.

kernel_sizestuple, optional (default=(5, 5))

The size of kernels in Conv1D layers.

pool_sizeint, optional (default=2)

The size of kernel in (Max) Pool layer.

filter_sizestuple, optional (default=(8, 8))

The sizes of filter for Conv1D layer corresponding to each Conv1D in the block. Number of conv layers is determined by the length of this tuple.

dense_unitsint, optional (default=732)

The number of output units of the final Dense layer of this Network. This is NOT the final layer but the penultimate layer.

conv_paddingstr or None, optional (default=”same”)

The type of padding to be applied to convolutional layers.

pool_paddingstr or None, optional (default=”same”)

The type of padding to be applied to pooling layers.

criterionstr, optional (default=”CrossEntropyLoss”)

The name of the loss function to be used during training, should be supported by PyTorch.

activationstr, Callable, or None, optional (default=None)

Activation applied to the output layer.

Permitted values:

  • None: no activation is applied to the output layer and the network returns raw outputs (logits). This is typically required when using CrossEntropyLoss, which expects logits as input.

  • str: name of a class in torch.nn. Case-sensitive names are recommended and must match PyTorch (e.g., "ReLU", "LeakyReLU"). Lowercase aliases for common activations are also accepted (e.g., "relu" is resolved to "ReLU"). The class is instantiated with default constructor arguments. Must be a valid torch.nn activation; see https://pytorch.org/docs/stable/nn.html#non-linear-activations-weighted-sum-nonlinearity

  • torch.nn.Module: an instance of a torch.nn.Module subclass, for example torch.nn.ReLU(). Arbitrary callables are not supported.

activation_hiddenstr, Callable, or None, default=”ReLU”

Activation applied to the hidden layers.

Permitted values:

  • None: no activation is applied to the hidden layers.

  • str: name of a class in torch.nn. Case-sensitive names are recommended and must match PyTorch (e.g., "ReLU", "LeakyReLU"). Lowercase aliases for common activations are also accepted (e.g., "relu" is resolved to "ReLU"). The class is instantiated with default constructor arguments. Must be a valid torch.nn activation; see https://pytorch.org/docs/stable/nn.html#non-linear-activations-weighted-sum-nonlinearity

  • torch.nn.Module: an instance of a torch.nn.Module subclass, for example torch.nn.ReLU(). Arbitrary callables are not supported.

use_biasbool, optional (default=True)

Whether bias should be included in the output layer.

criterionstr, optional (default=”CrossEntropyLoss”)

The name of the loss function to be used during training, should be supported by PyTorch.

criterion_kwargsdict or None, optional (default=None)

Additional keyword arguments to pass to the criterion.

optimstr or None or an instance of optimizers defined in torch.optim,

optional (default=None) The optimizer to use for training the model. If left as None, SGD is used with momentum=0.9, weight_decay=0.0005. List of available optimizers: https://pytorch.org/docs/stable/optim.html#algorithms

optim_kwargsdict or None, optional (default=None)

Additional keyword arguments to pass to the optimizer.

callbacksNone or str or a tuple of str, optional (default=None)

Currently only learning rate schedulers are supported as callbacks. If more than one scheduler is passed, they are applied sequentially in the order they are passed. If None, then no learning rate scheduler is used.

callback_kwargsdict or None, optional (default=None)

The keyword arguments to be passed to the callbacks.

metricsNone or str or Callable or tuple of str and/or Callable, default = None

Metrics to compute during training. If None, no metrics are computed beyond the loss. Metrics are computed from torchmetrics library. If a string/Callable is passed, it must be one of the metrics defined in https://lightning.ai/docs/torchmetrics/stable/ Examples: “Accuracy”, “F1Score”, “Precision”, “Recall”

lrfloat, optional (default=0.01)

The learning rate to use for the optimizer.

verbosebool, optional (default=False)

Whether to print progress information during training.

random_stateint, optional (default=0)

The seed to any random action.

Attributes:
is_fitted

Whether fit has been called.

References

[1]

Zheng et. al, Time series classification using multi-channels deep convolutional neural networks, International Conference on Web-Age Information Management, Pages 298-310, year 2014, organization: Springer.

Examples

>>> from sktime.classification.deep_learning.mcdcnn import MCDCNNClassifierTorch
>>> from sktime.datasets import load_unit_test
>>> X_train, y_train = load_unit_test(split="train")
>>> mcdcnn = MCDCNNClassifierTorch()
>>> mcdcnn.fit(X_train, y_train)
MCDCNNClassifierTorch(...)

Methods

check_is_fitted([method_name])

Check if the estimator has been fitted.

clone()

Obtain a clone of the object with same hyper-parameters and config.

clone_tags(estimator[, tag_names])

Clone tags from another object as dynamic override.

create_test_instance([parameter_set])

Construct an instance of the class, using first test parameter set.

create_test_instances_and_names([parameter_set])

Create list of all test instances and a list of names for them.

fit(X, y)

Fit time series classifier to training data.

fit_predict(X, y[, cv, change_state])

Fit and predict labels for sequences in X.

fit_predict_proba(X, y[, cv, change_state])

Fit and predict labels probabilities for sequences in X.

get_class_tag(tag_name[, tag_value_default])

Get class tag value from class, with tag level inheritance from parents.

get_class_tags()

Get class tags from class, with tag level inheritance from parent classes.

get_config()

Get config flags for self.

get_fitted_params([deep])

Get fitted parameters.

get_param_defaults()

Get object's parameter defaults.

get_param_names([sort])

Get object's parameter names.

get_params([deep])

Get a dict of parameters values for this object.

get_tag(tag_name[, tag_value_default, ...])

Get tag value from instance, with tag level inheritance and overrides.

get_tags()

Get tags from instance, with tag level inheritance and overrides.

get_test_params([parameter_set])

Return testing parameter settings for the estimator.

is_composite()

Check if the object is composed of other BaseObjects.

load_from_path(serial)

Load object from file location.

load_from_serial(serial)

Load object from serialized memory container.

predict(X)

Predicts labels for sequences in X.

predict_proba(X)

Predicts labels probabilities for sequences in X.

reset()

Reset the object to a clean post-init state.

save([path, serialization_format])

Save serialized self to bytes-like object or to (.zip) file.

score(X, y)

Scores predicted labels against ground truth labels on X.

set_config(**config_dict)

Set config flags to given values.

set_params(**params)

Set the parameters of this object.

set_random_state([random_state, deep, ...])

Set random_state pseudo-random seed parameters for self.

set_tags(**tag_dict)

Set instance level tag overrides to given values.