code: def test_nucleus_sampling(self):
      vocab = text_utils.VocabFromText(self.VOCAB_EXAMPLE_SENTENCES)
  
      model_config = self.config.model_config.butd
      model = TestDecoderModel(model_config, vocab)
      model.build()
      model.eval()
  
      sample = Sample()
      sample.dataset_name = "coco"
      sample.dataset_type = "test"
      sample.image_feature_0 = torch.randn(100, 2048)
      sample.answers = torch.zeros((5, 10), dtype=torch.long)
      sample_list = SampleList([sample])
  
      tokens = model(sample_list)["captions"]
  
      # these are expected tokens for sum_threshold = 0.5
      expected_tokens = [1.0, 23.0, 38.0, 30.0, 5.0, 11.0, 2.0]
  
      self.assertEqual(tokens[0].tolist(), expected_tokens)
  
imports: import os
  import unittest
  import mmf.utils.text
  import numpy
  import torch
  from mmf.common.registry import registry
  from mmf.common.sample import Sample, SampleList
  from mmf.utils.configuration import Configuration
  from mmf.utils.env import setup_imports
  from mmf.utils.general import get_mmf_root
  from tests.test_utils import dummy_args
  from tests.utils.test_model import TestDecoderModel
label_desc: Use image node_id 6 for calling the TestUtilsText obj's underlying member method code with example usage: obj.test_nucleus_sampling() without return types