def METHOD_NAME(model, saved_model_dir):
    parameters = model.parameters.get_concrete_function()
    init_params = parameters()
    print(f"Initial parameters is {init_params}.")
    restore = model.restore.get_concrete_function(**init_params)
    restore_test = restore(**init_params)
    print(f"Restore test result: {restore_test}.")
    tf.saved_model.save(
        model,
        saved_model_dir,
        signatures={
            "train": model.train.get_concrete_function(),
            "infer": model.infer.get_concrete_function(),
            "parameters": parameters,
            "restore": restore,
        },
    )
    converted_params = [
        param.numpy() for param in parameters_from_raw_dict(init_params)
    ]
    shape = f"{[list(param.shape) for param in converted_params]}"
    print(f"Model parameter shape: {red(shape)}.")
    byte_sizes = f"{[param.size * param.itemsize for param in converted_params]}"
    print(f"Model parameter sizes in bytes: {red(byte_sizes)}.")
    return converted_params