def METHOD_NAME(self, input_shape):
    assert len(input_shape) >= 2
    layer_kwargs = dict(
        kernel_initializer=self.kernel_initializer,
        bias_initializer=self.bias_initializer,
        kernel_regularizer=self.kernel_regularizer,
        bias_regularizer=self.bias_regularizer,
        kernel_constraint=self.kernel_constraint,
        bias_constraint=self.bias_constraint,
    )
    self.mlp = Sequential()
    for channels in self.mlp_hidden:
        self.mlp.add(Dense(channels, self.mlp_activation, **layer_kwargs))
        if self.mlp_batchnorm:
            self.mlp.add(BatchNormalization())
    self.mlp.add(
        Dense(
            self.channels, self.activation, use_bias=self.use_bias, **layer_kwargs
        )
    )
    if self.epsilon is None:
        self.eps = self.add_weight(shape=(1,), initializer="zeros", name="eps")
    else:
        # If epsilon is given, keep it constant
        self.eps = tf.cast(self.epsilon, self.dtype)
    self.one = tf.cast(1, self.dtype)
    self.built = True