class_docstr: Class for storing all the information needed for creating an input
  tensor for AI models.
  
  Attributes:
      size (tuple): Tuple with the input size (batch size excluded)
      dtype (str): Data type of the tensor.
      min_value (int or float, optional): Min value the tensor elements can
          have.
      max_value (int or float, optional): Max value the tensor elements can
          have.
class_docstr_tok: ["Class","for","storing","all","the","information","needed","for","creating","an","input","tensor","for","AI","models",".","Attributes",":","size","(","tuple",")",":","Tuple","with","the","input","size","(","batch","size","excluded",")","dtype","(","str",")",":","Data","type","of","the","tensor",".","min_value","(","int","or","float",",","optional",")",":","Min","value","the","tensor","elements","can","have",".","max_value","(","int","or","float",",","optional",")",":","Max","value","the","tensor","elements","can","have","."]
code: def __getattr__(self, item):
      return self.__dict__.get(item)
  
imports: import subprocess
  from dataclasses import dataclass
  from enum import Enum
  from functools import cached_property
  from typing import Optional, Any, Union, Tuple, List, Dict
  import numpy
  from nebullvm.optional_modules.tensorflow import tensorflow
  from nebullvm.optional_modules.torch import torch
label_desc: Use image node_id 2 for calling the InputInfo obj's underlying member method code with example usage: obj.__getattr__(item) and returns: self