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