code: def get_best_and_softmax(self, proba, text):
      self.model.zero_grad()
  
      output = self.model(text)
  
      sm = F.softmax(output, dim=1)
      with torch.no_grad():
          best_label = torch.argmax(sm, dim=1)
      proba.extend(sm.detach().to("cpu", non_blocking=True).numpy())
  
      return best_label, sm
  
imports: import datetime
  import logging
  import tempfile
  import numpy
  from functools import partial
  from sklearn.preprocessing import MultiLabelBinarizer
  from small_text.classifiers.classification import EmbeddingMixin
  from small_text.integrations.pytorch.classifiers.base import PytorchClassifier
  from small_text.integrations.pytorch.exceptions import PytorchNotFoundError
  from small_text.integrations.pytorch.models.kimcnn import KimCNN
  from small_text.utils.classification import get_splits
  from small_text.utils.context import build_pbar_context
  from small_text.utils.data import check_training_data, list_length
  from small_text.utils.annotations import early_stopping_deprecation_warning
  from small_text.utils.labels import csr_to_list, get_num_labels
  from small_text.utils.datetime import format_timedelta
  from small_text.utils.logging import verbosity_logger, VERBOSITY_MORE_VERBOSE
  from small_text.utils.system import get_tmp_dir_base
label_desc: Use image node_id 2 for calling the KimCNNEmbeddingMixin obj's underlying member method code with example usage: obj.get_best_and_softmax(proba, text) and returns: best_label,  sm