code: def _visit_and_substitute_raw_values(cls, nodes, raw_values_dict):
      for node in nodes:
          for attr in node.attribute:
              if attr.HasField("t"):
                  cls._substitute_raw_value(attr.t, raw_values_dict)
              for t in attr.tensors:
                  cls._substitute_raw_value(t, raw_values_dict)
              if attr.HasField("g"):
                  cls._visit_and_substitute_raw_values(
                      attr.g.node, raw_values_dict
                  )
              for g in attr.graphs:
                  cls._visit_and_substitute_raw_values(
                      g.node, raw_values_dict
                  )
  
imports: import collections
  import sys
  import zipfile
  import itertools
  import onnx.backend
  from caffe2.python import core, workspace, rnn_cell, gru_cell
  from caffe2.python.model_helper import ModelHelper
  from caffe2.proto import caffe2_pb2
  import caffe2.python.utils
  import numpy
  import onnx
  from onnx import TensorProto
  import onnx.numpy_helper
  import onnx.defs
  import onnx.shape_inference
  import onnx.utils
  from onnx.backend.base import Backend, Device, DeviceType, namedtupledict
  from caffe2.python.onnx.workspace import Workspace
  from caffe2.python.onnx.backend_rep import Caffe2Rep
  import caffe2.python._import_c_extension
  import warnings
label_desc: Use image node_id 12 for calling the Caffe2Backend obj's underlying member method code with example usage: obj._visit_and_substitute_raw_values(cls, nodes, raw_values_dict) without return types