code: def _init_model(self):
          
          model = Sequential()
          model.add(Conv2D(input_shape=list(self.image_size) + [self.channels], filters=self.filters,
                           kernel_size=self.kernel_size, activation='relu', data_format='channels_last'))
          model.add(
              Conv2D(filters=self.filters, kernel_size=self.kernel_size, activation='relu', data_format='channels_last'))
          model.add(MaxPooling2D())
          model.add(
              Conv2D(filters=self.filters, kernel_size=self.kernel_size, activation='relu', data_format='channels_last'))
          model.add(
              Conv2D(filters=self.filters, kernel_size=self.kernel_size, activation='relu', data_format='channels_last'))
          model.add(MaxPooling2D())
  
          model.add(Flatten())
          model.add(Dense(units=len(self.emotion_map.keys()), activation="relu"))
          if self.verbose:
              model.summary()
          self.model = model
docs: Composes all layers of 2D CNN.