code: def test_dedup_by_vid_no_frame_mask(self):
      logits = np.array(
          [
              [1.0, -2.0, 3.0],
              [3.0, -2.0, 1.0],
              [3.0, -2.0, 1.0],
          ],
          np.float32,
      )
      labels = np.array(
          [
              [1, 0, 0],
              [0, 1, 0],
              [0, 1, 0],
          ],
          np.int32,
      )
      batch_mask = np.array([1, 1, 1], np.int32)
      vids = np.array([0, 1, 1], np.int32)
      (
          deduped_logits,
          deduped_labels,
          deduped_vids,
      ) = postprocessing_utils.dedup_by_vid(
          logits, labels, batch_mask, vids
      )
      self.assertAllClose(
          deduped_logits,
          [
              [1.0, -2.0, 3.0],
              [3.0, -2.0, 1.0],
          ],
      )
      self.assertAllEqual(
          deduped_labels,
          [
              [1, 0, 0],
              [0, 1, 0],
          ],
      )
      self.assertAllEqual(deduped_vids, [0, 1])
  
file_path: scenic/scenic/projects/unloc/postprocessing_utils_test.py
imports: from absl.testing import parameterized
  import ml_collections
  import numpy
  from scenic.projects.unloc import metrics
  from scenic.projects.unloc import postprocessing_utils
  import tensorflow
label_desc: Use image node_id 1 for calling the PostprocessingUtilsTest obj's underlying member method code with example usage: obj.test_dedup_by_vid_no_frame_mask() without return types