          slices = [(ax_map[a] if a in ax_map else slice(None)) for a in range(len(shape))]
          retval = inputs[tuple(slices)]
          return retval
  
  
  class ReduceLayerO2K(keras.layers.Layer):
      """ Custom Keras Reduce layer generated by onnx2keras. """
      def __init__(self, axes=None, keepdims=True, **kwargs):
          self._axes = [axes] if isinstance(axes, int) else axes
          self._keepdims = bool(keepdims)
          super().__init__(**kwargs)
  
      def get_config(self):
          """ Returns the config of the layer.
  
          A layer config is a Python dictionary (serializable) containing the configuration of a
          layer. The same layer can be re-instantiated later (without its trained weights) from this
 
</s> remove     def get_config(self):
        """ Returns the config of the layer.

        A layer config is a Python dictionary (serializable) containing the configuration of a
        layer. The same layer can be re-instantiated later (without its trained weights) from this
        configuration. The config of a layer does not include connectivity information, nor the
        layer class name. These are handled by `Network` (one layer of abstraction above).

        Returns
        -------
        dict
            The configuration for the layer
        """
        config = super().get_config()
        config.update({
            'starts': self._starts, 'ends': self._ends,
            'axes': self._axes, 'steps': self._steps
        })
        return config

 </s> add  </s> remove         A layer config is a Python dictionary (serializable) containing the configuration of a
        layer. The same layer can be re-instantiated later (without its trained weights) from this
        configuration. The config of a layer does not include connectivity information, nor the
        layer class name. These are handled by `Network` (one layer of abstraction above).

 </s> add  </s> remove         return self._constant.shape

    def get_config(self):
        """ Returns the config of the layer.
 </s> add         name = "conv{}".format(idx)
        var_x = inputs
        for i in range(1, recursions + 1):
            rec_name = "{}_{}".format(name, i)
            var_x = ZeroPadding2D(1, name="{}.zeropad".format(rec_name))(var_x)
            var_x = Conv2D(filters,
                           kernel_size=3,
                           strides=1,
                           activation="relu",
                           name=rec_name)(var_x)
        return var_x

    @classmethod
    def conv_up(cls, inputs, filters, idx):
        """ Convolution up filter blocks with zero padding added. </s> remove         A layer config is a Python dictionary (serializable) containing the configuration of a
        layer. The same layer can be re-instantiated later (without its trained weights) from this
        configuration. The config of a layer does not include connectivity information, nor the
        layer class name. These are handled by `Network` (one layer of abstraction above).
 </s> add         Parameters
        ----------
        inputs: tensor
            The input tensor to the convolution block
        filters: int
            The initial number of filters
        idx: int
            The layer index for naming </s> remove         config = super().get_config()
        config.update({
            'constant_obj': self._constant,
            'dtype': self._dtype
        })
        return config
 </s> add         name = "conv{}".format(idx)
        var_x = inputs
        for i in range(1, 3):
            rec_name = "{}_{}".format(name, i)
            size = 1 if i == 1 else 3
            if i == 2:
                var_x = ZeroPadding2D(1, name="{}.zeropad".format(rec_name))(var_x)
            var_x = Conv2D(filters * i,
                           kernel_size=size,
                           strides=i,
                           activation="relu",
                           name=rec_name)(var_x)
        return var_x
          slices = [(ax_map[a] if a in ax_map else slice(None)) for a in range(len(shape))]
          retval = inputs[tuple(slices)]
          return retval
  








      def get_config(self):
          """ Returns the config of the layer.
  
          A layer config is a Python dictionary (serializable) containing the configuration of a
          layer. The same layer can be re-instantiated later (without its trained weights) from this
keep keep keep keep replace replace replace replace replace replace replace replace keep keep keep keep keep
 extract: S3FD - Convert to re-enable CPU 
plugins/extract/detect/s3fd.py