def _forward_modules_ints_helper()

in iep/models/module_net.py [0:0]


  def _forward_modules_ints_helper(self, feats, program, i, j):
    used_fn_j = True
    if j < program.size(1):
      fn_idx = program.data[i, j]
      fn_str = self.vocab['program_idx_to_token'][fn_idx]
    else:
      used_fn_j = False
      fn_str = 'scene'
    if fn_str == '<NULL>':
      used_fn_j = False
      fn_str = 'scene'
    elif fn_str == '<START>':
      used_fn_j = False
      return self._forward_modules_ints_helper(feats, program, i, j + 1)
    if used_fn_j:
      self.used_fns[i, j] = 1
    j += 1
    module = self.function_modules[fn_str]
    if fn_str == 'scene':
      module_inputs = [feats[i:i+1]]
    else:
      num_inputs = self.function_modules_num_inputs[fn_str]
      module_inputs = []
      while len(module_inputs) < num_inputs:
        cur_input, j = self._forward_modules_ints_helper(feats, program, i, j)
        module_inputs.append(cur_input)
    module_output = module(*module_inputs)
    return module_output, j