input: Write a function named "Transpile" that takes four arguments: "src_dir", "dst_dir", "model_filename", and "params_filename". The function should create a CPUPlace object and an Executor object using Paddle Fluid. It should then create a Scope object and load the inference program, feed target names, and fetch targets using fluid.io.load_inference_model(). The function should clone the inference program, apply the inference transpiler, and save the optimized inference program to "dst_dir". If "dst_dir" does not exist, the function should create it. Finally, the function should create a main function that uses argparse.ArgumentParser() to take in arguments and call the "Transpile" function with the parsed arguments.
  
  assert Transpile('/src', '/dst', 'model', 'params')==None
  assert Transpile('/another_src', '/another_dst', 'another_model', 'another_params')==None
  assert Transpile('/missing_src', '/missing_dst', 'missing_model', 'missing_params')==None
  assert Transpile('/empty_src', '/empty_dst', 'empty_model', 'empty_params')==None
  assert Transpile('/invalid_src', '/invalid_dst', 'invalid_model', 'invalid_params')==None
output: 
  import os
  import paddle.fluid as fluid
  import argparse
  
  def Transpile(src_dir, dst_dir, model_filename, params_filename):
      place = fluid.CPUPlace()
      exe = fluid.Executor(place)
      scope = fluid.core.Scope()
      
      with fluid.scope_guard(scope):
          [inference_program, feed_target_names, fetch_targets] = fluid.io.load_inference_model(
              dirname=src_dir,
              executor=exe,
              model_filename=model_filename,
              params_filename=params_filename
          )
          
          transpiled_program = fluid.compiler.CompiledProgram(inference_program).with_data_parallel()
          
          if not os.path.exists(dst_dir):
              os.makedirs(dst_dir)
          
          fluid.io.save_inference_model(
              dirname=dst_dir,
              feeded_var_names=feed_target_names,
              target_vars=fetch_targets,
              executor=exe,
              main_program=transpiled_program.program,
              model_filename=model_filename,
              params_filename=params_filename
          )
  
  def main():
      parser = argparse.ArgumentParser()
      parser.add_argument('--src_dir', type=str, required=True)
      parser.add_argument('--dst_dir', type=str, required=True)
      parser.add_argument('--model_filename', type=str, required=True)
      parser.add_argument('--params_filename', type=str, required=True)
      args = parser.parse_args()
      
      Transpile(args.src_dir, args.dst_dir, args.model_filename, args.params_filename)
  