code: def inputs(self):
      assert NUM_ACTIONS is not None
      return [
          tf.TensorSpec(
              (None,) + STATE_SHAPE + (FRAME_HISTORY,),
              tf.uint8,
              "state",
          ),
          tf.TensorSpec((None,), tf.int64, "action"),
          tf.TensorSpec((None,), tf.float32, "futurereward"),
          tf.TensorSpec((None,), tf.float32, "action_prob"),
      ]
  
imports: import argparse
  import cv2
  import gym
  import multiprocessing
  import numpy
  import os
  import sys
  import uuid
  import tensorflow
  from six.moves import queue
  from concurrent import futures
  from tensorpack import *
  from tensorpack.tfutils.gradproc import MapGradient, SummaryGradient
  from tensorpack.utils.concurrency import ensure_proc_terminate, start_proc_mask_signal
  from tensorpack.utils.gpu import get_num_gpu
  from tensorpack.utils.serialize import dumps
  from atari_wrapper import FireResetEnv, FrameStack, LimitLength, MapState
  from common import Evaluator, eval_model_multithread, play_n_episodes
  from simulator import SimulatorMaster, SimulatorProcess, TransitionExperience
label_desc: Use image node_id 1 for calling the Model obj's underlying member method code with example usage: obj.inputs() and returns: list