              layer). Shape tuples can include ``None`` for free dimensions, instead of an integer.
  
          Returns
          -------
          tuple
              An output shape tuple.
          """
          # TODO: do this nicer
          ldims = len(input_shape[0])
          rdims = len(input_shape[1])
          if ldims > rdims:
 
</s> remove         # TODO: do this nicer
        ldims = len(input_shape[0])
        rdims = len(input_shape[1])
        if ldims > rdims:
            return input_shape[0]
        if rdims > ldims:
            return input_shape[1]
        lprod = np.prod(list(filter(bool, input_shape[0])))
        rprod = np.prod(list(filter(bool, input_shape[1])))
        return input_shape[0 if lprod > rprod else 1]


class AddO2K(ElementwiseLayerO2K):
    """ Custom Keras Add layer generated by onnx2keras. """
    def call(self, inputs, **kwargs):  # pylint:disable=unused-argument
        """This is where the layer's logic lives.
 </s> add         norm = K.sqrt(K.sum(K.pow(inputs, 2), axis=-1, keepdims=True)) + 1e-10
        var_x = inputs / norm * self.w
        return var_x

    def get_config(self):
        """ Returns the config of the layer. </s> remove         Returns
        -------
        tuple
            An output shape tuple.
        """
        if self._axes is None:
            return (1,)*len(input_shape) if self._keepdims else tuple()
        ret = list(input_shape)
        for i in sorted(self._axes, reverse=True):
            if self._keepdims:
                ret[i] = 1
            else:
                ret.pop(i)
        return tuple(ret)
 </s> add         var_x = self.conv_block(var_x, 128, 2, 2)
        var_x = MaxPooling2D(pool_size=2, strides=2)(var_x) </s> remove         input_shape: tuple or list of tuples
            Shape tuple (tuple of integers) or list of shape tuples (one per output tensor of the
            layer). Shape tuples can include ``None`` for free dimensions, instead of an integer.
 </s> add         inputs: tensor
            The input to the L2 Normalization Layer </s> remove         Parameters
        ----------
        input_shape: tuple or list of tuples
            Shape tuple (tuple of integers) or list of shape tuples (one per output tensor of the
            layer). Shape tuples can include ``None`` for free dimensions, instead of an integer.
 </s> add     def model_definition(self):
        """ Keras S3FD Model Definition, adapted from FAN pytorch implementation. """
        input_ = Input(shape=(640, 640, 3))
        var_x = self.conv_block(input_, 64, 1, 2)
        var_x = MaxPooling2D(pool_size=2, strides=2)(var_x) </s> remove         input_shape: tuple or list of tuples
            Shape tuple (tuple of integers) or list of shape tuples (one per output tensor of the
            layer). Shape tuples can include ``None`` for free dimensions, instead of an integer.
            This is unused for a constant layer
 </s> add         inputs: tensor
            The input tensor to the convolution block
        filters: int
            The number of filters
        idx: int
            The layer index for naming
        recursions: int
            The number of recursions of the block to perform
        tensor:
            The output from the L2 Normalization Layer
              layer). Shape tuples can include ``None`` for free dimensions, instead of an integer.
  
          Returns
          -------
        tensor:
            The output from the L2 Normalization Layer
        tensor:
            The output from the L2 Normalization Layer
          """
          # TODO: do this nicer
          ldims = len(input_shape[0])
          rdims = len(input_shape[1])
          if ldims > rdims:
keep keep keep keep replace replace keep keep keep keep keep
 extract: S3FD - Convert to re-enable CPU 
plugins/extract/detect/s3fd.py