  ################################################################################
  # CUSTOM KERAS LAYERS
  # generated by onnx2keras
  ################################################################################
  class ElementwiseLayerO2K(keras.layers.Layer):
      """ Custom Keras Element Wise layer generated by onnx2keras. """
      def call(self, inputs, **kwargs):  # pylint:disable=unused-argument
          """This is where the layer's logic lives.
  
          Override for layers that inherit from this class.
  
          Parameters
          ----------
          inputs: Input tensor, or list/tuple of input tensors.
              The input to the layer
          **kwargs: Additional keyword arguments.
              Required for parent class but unused
          Returns
          -------
          A tensor or list/tuple of tensors.
              The layer output
          """
          raise NotImplementedError()
  
      def compute_output_shape(self, input_shape):  # pylint:disable=no-self-use
          """Computes the output shape of the layer.
  
          Assumes that the layer will be built to match that input shape provided.
  
          Parameters
          ----------
 
</s> remove         Parameters
        ----------
        inputs: Input tensor, or list/tuple of input tensors.
            The input to the layer. Required for parent class but unused
        **kwargs: Additional keyword arguments.
            Required for parent class but unused
        Returns
        -------
        A tensor or list/tuple of tensors.
            The layer output
        """
        data = K.constant(self._constant, dtype=self._dtype)
        return data
 </s> add         bmax = Maximum()([chunks[0], chunks[1], chunks[2]])
        cls1 = Concatenate()([bmax, chunks[3]]) </s> remove # generated by onnx2keras
 </s> add  </s> remove         Parameters
        ----------
        inputs: Input tensor, or list/tuple of input tensors.
            The input to the layer
        **kwargs: Additional keyword arguments.
            Required for parent class but unused
        Returns
        -------
        A tensor or list/tuple of tensors.
            The layer output
        """
        raise NotImplementedError()
 </s> add         var_x = self.conv_block(var_x, 512, 5, 3)
        f5_3 = var_x
        var_x = MaxPooling2D(pool_size=2, strides=2)(var_x) </s> remove         Parameters
        ----------
        inputs: Input tensor, or list/tuple of input tensors.
            The input to the layer
        **kwargs: Additional keyword arguments.
            Required for parent class but unused
 </s> add  </s> remove         Parameters
        ----------
        inputs: Input tensor, or list/tuple of input tensors.
            The input to the layer
        **kwargs: Additional keyword arguments.
            Required for parent class but unused
        Returns
        -------
        A tensor or list/tuple of tensors.
            The layer output
        """
        return K.sum(inputs, self._axes, self._keepdims)
 </s> add         f3_3 = L2Norm(256, scale=10, name="conv3_3_norm")(f3_3)
        f4_3 = L2Norm(512, scale=8, name="conv4_3_norm")(f4_3)
        f5_3 = L2Norm(512, scale=5, name="conv5_3_norm")(f5_3)
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
  ################################################################################
  # CUSTOM KERAS LAYERS
  # generated by onnx2keras
  ################################################################################
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
class L2Norm(keras.layers.Layer):
    """ L2 Normalization layer for S3FD.

    Parameters
    ----------
    n_channels: int
        The number of channels to normalize
    scale: float, optional
        The scaling for initial weights. Default: `1.0`
    """
    def __init__(self, n_channels, scale=1.0, **kwargs):
        super().__init__(**kwargs)
        self._n_channels = n_channels
        self._scale = scale
        self.w = self.add_weight("l2norm",  # pylint:disable=invalid-name
                                 (self._n_channels, ),
                                 trainable=True,
                                 initializer=keras.initializers.Constant(value=self._scale),
                                 dtype="float32")
  
          Assumes that the layer will be built to match that input shape provided.
  
          Parameters
          ----------
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace 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