CNNClassifierTorch
Time Convolutional Neural Network (CNN) in PyTorch, as described in [1].
Zhao et al. 2017 uses MSE loss and sigmoid activation in all layers. To obtain same behaviour as Zhao et al. 2017, set activation and criterion to “sigmoid” and “MSELoss” respectively.
Adapted from the implementation from Fawaz et. al https://github.com/hfawaz/dl-4-tsc/blob/master/classifiers/cnn.py
Schnellstart
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)Parameter(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_sizesmust be equal to the length offilter_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_sizesmust be equal to the length ofkernel_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.
Beispiele
>>> 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(
... )Referenzen
Zhao et al. Convolutional neural networks for time series classification, Journal of Systems Engineering and Electronics, 28(1):2017.