def METHOD_NAME():
    class Model(tf.Module):
        @tf.function
        def model_func(self, x):
            weight_shape = [3, 3, 6, 1]  # HWO1
            weight = tf.constant(np.random.uniform(size=weight_shape), dtype=tf.float32)
            op = tf.nn.depthwise_conv2d(x, weight, strides=[1, 1, 1, 1], padding="SAME")
            op = tf.nn.relu(op)
            op = tf.reshape(op, [1, 8, 6, 3])
            op = tf.nn.pool(op, [2, 2], "MAX")
            op = tf.strided_slice(op, [0, 2, 3, 1], [1, 6, 5, 2])
            return op
    model = Model()
    concrete_func = model.model_func.get_concrete_function(
        tf.TensorSpec(ifm_shape, dtype=tf.float32)
    )
    # Convert the model
    def representative_dataset():
        for _ in range(100):
            data = np.random.rand(*tuple(ifm_shape))
            yield [data.astype(np.float32)]
    converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
    converter.optimizations = [tf.lite.Optimize.DEFAULT]
    converter.representative_dataset = representative_dataset
    converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
    converter.inference_input_type = tf.int8
    converter.inference_output_type = tf.int8
    tflite_model = converter.convert()
    return tflite_model