class_docstr: Base class for a model description.
  
  It is used for the simple training interface described in
  `Training Interface Tutorial <https://tensorpack.readthedocs.io/tutorial/training-interface.html>`_.
  
  Subclass is expected to implement :meth:`inputs` and :meth:`build_graph`, as they
  together define a tower function.
docstr: A subclass is expected to implement this method.
  
  If returning placeholders,
  the placeholders **have to** be created inside this method.
  Don't return placeholders created in other places.
  
  Also, users should never call this method by yourself.
  
  Returns:
      list[tf.TensorSpec or tf.placeholder].
docstr_tok: ["A","subclass","is","expected","to","implement","this","method",".","If","returning","placeholders",",","the","placeholders","*","*","have","to","*","*","be","created","inside","this","method",".","Do","n't","return","placeholders","created","in","other","places",".","Also",",","users","should","never","call","this","method","by","yourself",".","Returns",":","list","[","tf.TensorSpec","or","tf.placeholder","]","."]
code: def inputs(self):
      """
      A subclass is expected to implement this method.
  
      If returning placeholders,
      the placeholders **have to** be created inside this method.
      Don't return placeholders created in other places.
  
      Also, users should never call this method by yourself.
  
      Returns:
          list[tf.TensorSpec or tf.placeholder].
      """
      raise NotImplementedError()
  
file_path: tensorpack/tensorpack/train/model_desc.py
imports: import tensorflow
  from ..utils.argtools import memoized_method
  from ..tfutils.common import get_op_tensor_name
  from ..tfutils.tower import get_current_tower_context
  from ..compat import _backport_tensor_spec, tfv1
label_desc: Use image node_id 3 for calling the ModelDescBase obj's underlying member method code with example usage: obj.inputs() without return types