class_docstr: Time Convolutional Neural Network (CNN), as described in [1]_.
  
  Parameters
  ----------
  n_epochs       : int, default = 2000
      the number of epochs to train the model
  batch_size      : int, default = 16
      the number of samples per gradient update.
  kernel_size     : int, default = 7
      the length of the 1D convolution window
  avg_pool_size   : int, default = 3
      size of the average pooling windows
  n_conv_layers   : int, default = 2
      the number of convolutional plus average pooling layers
  filter_sizes    : array of shape (n_conv_layers) default = [6, 12]
  random_state    : int or None, default=None
      Seed for random number generation.
  verbose         : boolean, default = False
      whether to output extra information
  loss            : string, default="mean_squared_error"
      fit parameter for the keras model
  metrics         : list of strings, default=["accuracy"],
  activation      : string or a tf callable, default="sigmoid"
      Activation function used in the output linear layer.
      List of available activation functions:
      https://keras.io/api/layers/activations/
  use_bias        : boolean, default = True
      whether the layer uses a bias vector.
  optimizer       : keras.optimizers object, default = Adam(lr=0.01)
      specify the optimizer and the learning rate to be used.
  
  Notes
  -----
  Adapted from the implementation from Fawaz et. al
  https://github.com/hfawaz/dl-4-tsc/blob/master/classifiers/cnn.py
  
  References
  ----------
  .. [1] Zhao et. al, Convolutional neural networks for time series classification,
  Journal of Systems Engineering and Electronics, 28(1):2017.
  
  Examples
  --------
  >>> from sktime.classification.deep_learning.cnn import CNNClassifier
  >>> 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")
  >>> cnn = CNNClassifier(n_epochs=20,batch_size=4)  # doctest: +SKIP
  >>> cnn.fit(X_train, y_train)  # doctest: +SKIP
  CNNClassifier(...)
class_docstr_tok: ["Time","Convolutional","Neural","Network","(","CNN",")",",","as","described","in","[","1","]","_.","Parameters","--","--","--","--","--","n_epochs",":","int",",","default","=","2000","the","number","of","epochs","to","train","the","model","batch_size",":","int",",","default","=","16","the","number","of","samples","per","gradient","update",".","kernel_size",":","int",",","default","=","7","the","length","of","the","1D","convolution","window","avg_pool_size",":","int",",","default","=","3","size","of","the","average","pooling","windows","n_conv_layers",":","int",",","default","=","2","the","number","of","convolutional","plus","average","pooling","layers","filter_sizes",":","array","of","shape","(","n_conv_layers",")","default","=","[","6",",","12","]","random_state",":","int","or","None",",","default=None","Seed","for","random","number","generation",".","verbose",":","boolean",",","default","=","False","whether","to","output","extra","information","loss",":","string",",","default=","''","mean_squared_error","''","fit","parameter","for","the","keras","model","metrics",":","list","of","strings",",","default=","[","``","accuracy","''","]",",","activation",":","string","or","a","tf","callable",",","default=","''","sigmoid","''","Activation","function","used","in","the","output","linear","layer",".","List","of","available","activation","functions",":","https",":","\/\/keras.io\/api\/layers\/activations\/","use_bias",":","boolean",",","default","=","True","whether","the","layer","uses","a","bias","vector",".","optimizer",":","keras.optimizers","object",",","default","=","Adam","(","lr=0.01",")","specify","the","optimizer","and","the","learning","rate","to","be","used",".","Notes","--","--","-","Adapted","from","the","implementation","from","Fawaz","et",".","al","https",":","\/\/github.com\/hfawaz\/dl-4-tsc\/blob\/master\/classifiers\/cnn.py","References","--","--","--","--","--","..","[","1","]","Zhao","et",".","al",",","Convolutional","neural","networks","for","time","series","classification",",","Journal","of","Systems","Engineering","and","Electronics",",","28","(","1",")",":2017",".","Examples","--","--","--","--",">",">",">","from","sktime.classification.deep_learning.cnn","import","CNNClassifier",">",">",">","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","''",")",">",">",">","cnn","=","CNNClassifier","(","n_epochs=20",",","batch_size=4",")","#","doctest",":","+SKIP",">",">",">","cnn.fit","(","X_train",",","y_train",")","#","doctest",":","+SKIP","CNNClassifier","(","...",")"]
docstr: Construct a compiled, un-trained, keras model that is ready for training.
  
  In sktime, time series are stored in numpy arrays of shape (d,m), where d
  is the number of dimensions, m is the series length. Keras/tensorflow assume
  data is in shape (m,d). This method also assumes (m,d). Transpose should
  happen in fit.
  
  Parameters
  ----------
  input_shape : tuple
      The shape of the data fed into the input layer, should be (m,d)
  n_classes: int
      The number of classes, which becomes the size of the output layer
  
  Returns
  -------
  output : a compiled Keras Model
docstr_tok: ["Construct","a","compiled",",","un-trained",",","keras","model","that","is","ready","for","training",".","In","sktime",",","time","series","are","stored","in","numpy","arrays","of","shape","(","d",",","m",")",",","where","d","is","the","number","of","dimensions",",","m","is","the","series","length",".","Keras\/tensorflow","assume","data","is","in","shape","(","m",",","d",")",".","This","method","also","assumes","(","m",",","d",")",".","Transpose","should","happen","in","fit",".","Parameters","--","--","--","--","--","input_shape",":","tuple","The","shape","of","the","data","fed","into","the","input","layer",",","should","be","(","m",",","d",")","n_classes",":","int","The","number","of","classes",",","which","becomes","the","size","of","the","output","layer","Returns","--","--","--","-","output",":","a","compiled","Keras","Model"]
code: def build_model(self, input_shape, n_classes, **kwargs):
      """Construct a compiled, un-trained, keras model that is ready for training.
  
      In sktime, time series are stored in numpy arrays of shape (d,m), where d
      is the number of dimensions, m is the series length. Keras/tensorflow assume
      data is in shape (m,d). This method also assumes (m,d). Transpose should
      happen in fit.
  
      Parameters
      ----------
      input_shape : tuple
          The shape of the data fed into the input layer, should be (m,d)
      n_classes: int
          The number of classes, which becomes the size of the output layer
  
      Returns
      -------
      output : a compiled Keras Model
      """
      import tensorflow as tf
      from tensorflow import keras
  
      tf.random.set_seed(self.random_state)
  
      if self.metrics is None:
          metrics = ["accuracy"]
      else:
          metrics = self.metrics
      input_layer, output_layer = self._network.build_network(
          input_shape, **kwargs
      )
  
      output_layer = keras.layers.Dense(
          units=n_classes,
          activation=self.activation,
          use_bias=self.use_bias,
      )(output_layer)
  
      self.optimizer_ = (
          keras.optimizers.Adam(learning_rate=0.01)
          if self.optimizer is None
          else self.optimizer
      )
  
      model = keras.models.Model(
          inputs=input_layer, outputs=output_layer
      )
      model.compile(
          loss=self.loss,
          optimizer=self.optimizer_,
          metrics=metrics,
      )
      return model
  
file_path: sktime/sktime/classification/deep_learning/cnn.py
imports: from copy import deepcopy
  from sklearn.utils import check_random_state
  from sktime.classification.deep_learning.base import BaseDeepClassifier
  from sktime.networks.cnn import CNNNetwork
  from sktime.utils.validation._dependencies import _check_dl_dependencies
label_desc: Use image node_id 2 for calling the CNNClassifier obj's underlying member method code with example usage: obj.build_model(input_shape, n_classes) and returns: model