class_docstr: Single-GPU single-cost single-tower trainer.
class_docstr_tok: ["Single-GPU","single-cost","single-tower","trainer","."]
code: def _setup_graph(self, input, get_cost_fn, get_opt_fn):
      logger.info("Building graph for a single training tower ...")
      with TrainTowerContext(""):
          grads = self._make_get_grad_fn(
              input, get_cost_fn, get_opt_fn
          )()
          opt = get_opt_fn()
          self.train_op = opt.apply_gradients(grads, name="train_op")
      return []
  
imports: import multiprocessing
  import os
  import sys
  import tensorflow
  from tensorpack.compat import tfv1
  from ..callbacks import CallbackFactory, RunOp
  from ..graph_builder.distributed import DistributedParameterServerBuilder, DistributedReplicatedBuilder
  from ..graph_builder.training import AsyncMultiGPUBuilder, SyncMultiGPUParameterServerBuilder, SyncMultiGPUReplicatedBuilder
  from ..graph_builder.utils import override_to_local_variable
  from ..input_source import FeedfreeInput, QueueInput
  from ..tfutils import get_global_step_var
  from ..tfutils.common import get_tf_version_tuple
  from ..tfutils.distributed import get_distributed_session_creator
  from ..tfutils.sesscreate import NewSessionCreator
  from ..tfutils.tower import TrainTowerContext
  from ..utils import logger
  from ..utils.argtools import map_arg
  from ..utils.develop import HIDE_DOC, deprecated
  from .tower import SingleCostTrainer
label_desc: Use image node_id 1 for calling the SimpleTrainer obj's underlying member method code with example usage: obj._setup_graph(input, get_cost_fn, get_opt_fn) and returns: list