code: def dump(self, graph_path):
      if self.toolkit == "tensorflow":
          from dlconv.tensorflow.visualizer import TensorFlowVisualizer
  
          if self._is_web_page(graph_path):
              TensorFlowVisualizer(self.meta_path).dump_html(graph_path)
          else:
              raise NotImplementedError(
                  "Image format or %s is unsupported!" % graph_path
              )
      elif self.toolkit == "keras":
          from dlconv.keras.visualizer import KerasVisualizer
  
          png_path, html_path = (None, None)
          if graph_path.endswith(".png"):
              png_path = graph_path
          elif self._is_web_page(graph_path):
              png_path = graph_path + ".png"
              html_path = graph_path
          else:
              raise NotImplementedError(
                  "Image format or %s is unsupported!" % graph_path
              )
          KerasVisualizer(self.meta_path).dump_png(png_path)
          if html_path:
              self._png_to_html(png_path, html_path)
              os.remove(png_path)
      else:
          raise NotImplementedError(
              "Visualization of %s is unsupported!" % self.toolkit
          )
  
imports: import base64
  from google.protobuf import json_format
  from importlib import import_module
  import json
  import numpy
  import os
  import sys
  from mmdnn.conversion.caffe.errors import ConversionError
  from mmdnn.conversion.caffe.common_graph import fetch_attr_value
  from mmdnn.conversion.caffe.utils import get_lower_case, get_upper_case, get_real_name
label_desc: Use image node_id 2 for calling the GraphDrawer obj's underlying member method code with example usage: obj.dump(graph_path) without return types