code: def onnx_compliancy(saved_model_path, strict, opset):
      saved_model = SavedModel()
      onnx_ops = []
  
      with open(
          os.path.join(REPO_PATH, "utils", "tf_ops", "onnx.json")
      ) as f:
          onnx_opsets = json.load(f)["opsets"]
  
      for i in range(1, opset + 1):
          onnx_ops.extend(onnx_opsets[str(i)])
  
      with open(saved_model_path, "rb") as f:
          saved_model.ParseFromString(f.read())
  
      model_op_names = set()
  
      # Iterate over every metagraph in case there is more than one (a saved model can contain multiple graphs)
      for meta_graph in saved_model.meta_graphs:
          # Add operations in the graph definition
          model_op_names.update(
              node.op for node in meta_graph.graph_def.node
          )
  
          # Go through the functions in the graph definition
          for func in meta_graph.graph_def.library.function:
              # Add operations in each function
              model_op_names.update(node.op for node in func.node_def)
  
      # Convert to list, sorted if you want
      model_op_names = sorted(model_op_names)
      incompatible_ops = []
  
      for op in model_op_names:
          if op not in onnx_ops and op not in INTERNAL_OPS:
              incompatible_ops.append(op)
  
      if strict and len(incompatible_ops) > 0:
          raise Exception(
              f"Found the following incompatible ops for the opset {opset}:\n"
              + incompatible_ops
          )
      elif len(incompatible_ops) > 0:
          print(
              f"Found the following incompatible ops for the opset {opset}:"
          )
          print(*incompatible_ops, sep="\n")
      else:
          print(
              f"The saved model {saved_model_path} can properly be converted with ONNX."
          )
  
imports: import argparse
  import json
  import os
  from tensorflow.core.protobuf.saved_model_pb2 import SavedModel
label_desc: Use image node_id 1 for calling a global function with example usage: onnx_compliancy(saved_model_path, strict, opset) without return types