code: def inputs(self):
      # When we use h history frames, the current state and the next state will have (h-1) overlapping frames.
      # Therefore we use a combined state for efficiency:
      # The first h are the current state, and the last h are the next state.
      return [
          tf.TensorSpec(
              (None,) + self.state_shape + (self.history + 1,),
              self.state_dtype,
              "comb_state",
          ),
          tf.TensorSpec((None,), tf.int64, "action"),
          tf.TensorSpec((None,), tf.float32, "reward"),
          tf.TensorSpec((None,), tf.bool, "isOver"),
      ]
  
file_path: tensorpack/examples/DeepQNetwork/DQNModel.py
imports: import abc
  from tensorpack import ModelDesc
  from tensorpack.compat import tfv1
  from tensorpack.tfutils import gradproc, optimizer, summary, varreplace
  from tensorpack.tfutils.scope_utils import auto_reuse_variable_scope
  from tensorpack.utils import logger
label_desc: Use image node_id 2 for calling the Model obj's underlying member method code with example usage: obj.inputs() and returns: list