def METHOD_NAME(onnx_path: str) -> dict:
    so = onnxruntime.SessionOptions()
    so.inter_op_num_threads = 1
    so.intra_op_num_threads = 1
    session = onnxruntime.InferenceSession(onnx_path, providers=['CPUExecutionProvider'], sess_options=so)
    input_data = {}
    for inp in session.get_inputs():
        name = inp.name
        shape = inp.shape
        dtype = inp.type
        if "int" in dtype:
            input_data[name] = np.random.randint(low=0, high=2, size=shape)
        else:
            input_data[name] = np.random.rand(*shape).astype(np.float32)
    pred = session.run([], input_data)
    output_shape = {}
    for tensor, oup_info in zip(pred, session.get_outputs()):
        shape = tensor.shape
        name = oup_info.name
        output_shape[name] = shape
    return output_shape