Back to models
Classifier

CNNClassifierTorch

Time Convolutional Neural Network (CNN) in PyTorch, as described in [1].

Quickstart

python
from sktime.classification.deep_learning.cnn import CNNClassifierTorch

estimator = CNNClassifierTorch(num_epochs: int=2000, batch_size: int=16, kernel_sizes: tuple [int, ... ]=(7, 7), avg_pool_size: int=3, filter_sizes: tuple [int, ... ]=(6, 12), padding: str='auto', use_bias: bool=True, activation: str | Callable | None=None, activation_hidden: str | Callable='Sigmoid', optimizer: str | None | Callable='Adam', optimizer_kwargs: dict | None=None, criterion: str | None | Callable='CrossEntropyLoss', criterion_kwargs: dict | None=None, callbacks: None | str | tuple [str, ... ]='ReduceLROnPlateau', callback_kwargs: dict | None=None, lr: float=0.01, verbose: bool=False, init_weights: str | None=None, random_state: int | None=None)

Parameters(19)

num_epochsint, default = 2000
Number of epochs to train the model.
batch_sizeint, default = 16
Size of each mini-batch.
kernel_sizestuple of int, default = (7, 7)

A tuple of length equal to the number of conv layers with each entry in the tuple specifies the kernel size for the corresponding convolutional layer. The length of kernel_sizes must be equal to the length of filter_sizes.

avg_pool_sizeint, default = 3
Size of the average pooling window.
filter_sizestuple of int, default = (6, 12)

A tuple of length equal to the number of conv layers with each entry in the tuple specifies the filter size for the corresponding convolutional layer. The length of filter_sizes must be equal to the length of kernel_sizes.

paddingstr, default = “auto”
Padding for conv layers. “auto”: “same” if series_length < 60 else “valid”; “valid” or “same” otherwise.
use_biasbool, default = True
Whether to use bias in output layer.
activationstr or callable or None, default = None
Activation on output layer. None when using CrossEntropyLoss.
activation_hiddenstr or callable, default = “Sigmoid”
Activation for hidden conv layers. Recommended activations include ‘Sigmoid’, ‘ReLU’, ‘Tanh’, ‘Softmax’ or ‘LogSoftmax’.
optimizerstr or callable, default = “Adam”
Optimizer to use. Same as TF default (Adam).
optimizer_kwargsdict or None, default = None
Additional keyword arguments for the optimizer.
criterionstr or callable, default = “CrossEntropyLoss”
Loss function for training.
criterion_kwargsdict or None, default = None
Additional keyword arguments for the criterion.
callbacksNone or str or tuple of str, default = “ReduceLROnPlateau”
Learning rate schedulers as callbacks.
callback_kwargsdict or None, default = None
Keyword arguments for callbacks.
lrfloat, default = 0.01
Learning rate (TF CNN uses Adam(lr=0.01)).
verbosebool, default = False
Whether to print progress during training.
init_weights: str or None, default = None
The method to initialize the weights of the conv layers. Supported values are ‘kaiming_uniform’, ‘kaiming_normal’, ‘xavier_uniform’, ‘xavier_normal’, or None for default PyTorch initialization.
random_stateint or None, default = None
Seed for reproducibility.

Examples

>>> from sktime.classification.deep_learning.cnn import CNNClassifierTorch
>>> from sktime.datasets import load_unit_test
>>> X_train, y_train = load_unit_test (split = "train")
>>> X_test, y_test = load_unit_test (split = "test")
>>> clf = CNNClassifierTorch (num_epochs = 20, batch_size = 4)
>>> clf. fit (X_train, y_train) CNNClassifierTorch(
... )

References

  1. [1 ] Zhao et al. Convolutional neural networks for time series classification, Journal of Systems Engineering and Electronics, 28(1):2017.