class_docstr: The class for input to the PLM and Prompts. To make users explicitly know the available keys,
  we define a dict with a set of predefined possible keys. The default value to any key is None.
  When use it as a dict, all the keys whose values are None are invisible.
  
  This class support most of the dict's operation (See Examples). It can also be consumed by
  pytorch's default_collate in DataLoader.
  Also a :py:meth:`to_tensor()` method is build to convert the values into torch.Tensor for torch's input.
  
  Examples:
  
  ..  code-block:: python
  
      in_feat = InputFeatures(**{'input_ids':[1,4,5], 'soft_token_ids': [3,4,5]})  # init from dict
      print(in_feat.keys())       # ['input_ids, 'soft_token_ids']
      in_feat['label'] = 3        # can assign value like normal dict
      print(in_feat.keys())       # ['input_ids','label', 'soft_token_ids'] (Note that it's also ordered)
      print(in_feat['label'])     # 3
      in_feat['alice'] = 0        # KeyError: Key alice not in predefined set of keys
      in_feat.values()            # [[1,4,5], 3, [3,4,5]]  (Note that it's also ordered)
      [in_feat[key] for key in in_feat]   # [[1,4,5], 3, [3,4,5]]
      new_dict= {**in_feat, 'new_key':2}  # new_dict is {'input_ids': [1, 4, 5], 'label': 3, 'soft_token_ids': [3, 4, 5], 'new_key': 2}
  
  Args:
      input_ids: Indices of input sequence tokens in the vocabulary.
      attention_mask: Mask to avoid performing attention on padding token indices.
          Mask values selected in ``[0, 1]``: Usually ``1`` for tokens that are NOT MASKED, ``0`` for MASKED (padded)
          tokens.
      token_type_ids: (Optional) Segment token indices to indicate first and second
          portions of the inputs. Only some models use them.
      label: (Optional) Label corresponding to the input. Int for classification problems,
          float for regression problems.
code: def add_tensorable_keys(cls, *args):
      cls.tensorable_keys.extend(args)
  
imports: import copy
  import json
  import pickle
  from typing import *
  import torch
  from torch.utils.data._utils.collate import default_collate
  from openprompt.utils.logging import logger
  from typing import Union
label_desc: Use image node_id 2 for calling the InputFeatures obj's underlying member method code with example usage: obj.add_tensorable_keys(cls) without return types