class_docstr: Implementation of LSTMFCNClassifier from Karim et al (2019) [1].
  
  Overview
  --------
   Combines an LSTM arm with a CNN arm. Optionally uses an attention mechanism in the
   LSTM which the author indicates provides improved performance.
  
  
  Parameters
  ----------
  n_epochs: int, default=2000
   the number of epochs to train the model
  batch_size: int, default=128
      the number of samples per gradient update.
  dropout: float, default=0.8
      controls dropout rate of LSTM layer
  kernel_sizes: list of ints, default=[8, 5, 3]
      specifying the length of the 1D convolution windows
  filter_sizes: int, list of ints, default=[128, 256, 128]
      size of filter for each conv layer
  lstm_size: int, default=8
      output dimension for LSTM layer
  attention: boolean, default=False
      If True, uses custom attention LSTM layer
  callbacks: keras callbacks, default=ReduceLRonPlateau
      Keras callbacks to use such as learning rate reduction or saving best model
      based on validation error
  verbose: 'auto', 0, 1, or 2. Verbosity mode.
      0 = silent, 1 = progress bar, 2 = one line per epoch.
      'auto' defaults to 1 for most cases, but 2 when used with
      `ParameterServerStrategy`. Note that the progress bar is not
      particularly useful when logged to a file, so verbose=2 is
      recommended when not running interactively (eg, in a production
      environment).
  random_state : int or None, default=None
      Seed for random, integer.
  
  
  Notes
  -----
  Ported from sktime-dl source code
  https://github.com/sktime/sktime-dl/blob/master/sktime_dl/classification/_lstmfcn.py
  
  References
  ----------
  .. [1] Karim et al. Multivariate LSTM-FCNs for Time Series Classification, 2019
  https://arxiv.org/pdf/1801.04503.pdf
code: def __init__(
      self,
      n_epochs=2000,
      batch_size=128,
      dropout=0.8,
      kernel_sizes=(8, 5, 3),
      filter_sizes=(128, 256, 128),
      lstm_size=8,
      attention=False,
      callbacks=None,
      random_state=None,
      verbose=0,
  ):
      super().__init__()
  
      self.classes_ = None
      self.input_shape = None
      self.model_ = None
      self.history = None
  
      # predefined
      self.n_epochs = n_epochs
      self.batch_size = batch_size
      self.kernel_sizes = kernel_sizes
      self.filter_sizes = filter_sizes
      self.lstm_size = lstm_size
      self.dropout = dropout
      self.attention = attention
  
      self.callbacks = callbacks
      self.random_state = random_state
      self.verbose = verbose
  
      self._network = LSTMFCNNetwork(
          kernel_sizes=self.kernel_sizes,
          filter_sizes=self.filter_sizes,
          random_state=self.random_state,
          lstm_size=self.lstm_size,
          dropout=self.dropout,
          attention=self.attention,
      )
      self._is_fitted = False
  
file_path: sktime/sktime/classification/deep_learning/lstmfcn.py
imports: from copy import deepcopy
  from sklearn.utils import check_random_state
  from sktime.classification.deep_learning.base import BaseDeepClassifier
  from sktime.networks.lstmfcn import LSTMFCNNetwork
label_desc: Use image node_id 1 to create a new LSTMFCNClassifier object from inherited base classes: BaseDeepClassifier with example: obj = LSTMFCNClassifier(n_epochs, batch_size, dropout, kernel_sizes, filter_sizes, lstm_size, attention, callbacks, random_state, verbose)