code: def add_metric(self, output1, output2):
      self._total_count += 1
      if self._topk == 1:
          if output1 == output2:
              self._correct_count += 1
      else:
          self._topk = min(len(output1.keys()), self._topk)
          out1_topk = sorted(output1, key=output1.get, reverse=True)[
              : self._topk
          ]
          out2_topk = sorted(output2, key=output2.get, reverse=True)[
              : self._topk
          ]
          if out1_topk[0] in out2_topk:
              self._correct_count += 1
  
imports: from os import listdir
  from sys import stdout
  import numpy
  from coremltools import ComputeUnit, _logger
  from coremltools._deps import _HAS_KMEANS1D, _kmeans1d
  from coremltools.models import _QUANTIZATION_MODE_CUSTOM_LOOKUP_TABLE, _QUANTIZATION_MODE_DEQUANTIZE, _QUANTIZATION_MODE_LINEAR_QUANTIZATION, _QUANTIZATION_MODE_LINEAR_SYMMETRIC, _QUANTIZATION_MODE_LOOKUP_TABLE_KMEANS, _QUANTIZATION_MODE_LOOKUP_TABLE_LINEAR, _SUPPORTED_QUANTIZATION_MODES, MLModel
  from ...None import _MINIMUM_FP16_SPEC_VERSION, _MINIMUM_QUANTIZED_MODEL_SPEC_VERSION, _SPECIFICATION_VERSION_IOS_14
  from ..utils import _get_model, _macos_version, _wp_to_fp16wp
  from .optimization_utils import _optimize_nn
label_desc: Use image node_id 2 for calling the TopKMetrics obj's underlying member method code with example usage: obj.add_metric(output1, output2) without return types