              layer = layer_dict[name]
              logger.debug("Processing layer '%s': (layer: %s, inbound_nodes: %s)",
                           name, layer, inbound)
              if not inbound:
                  logger.debug("Adding model inputs %s: %s", self._input_names, self._inputs)
                  model = layer(self._inputs)
              else:
                  layer_inputs = [compiled_layers[inp] for inp in inbound]
                  logger.debug("Compiling layer '%s': layer inputs: %s", name, layer_inputs)
                  model = layer(layer_inputs)
              compiled_layers[name] = model
 
</s> remove                          name, layer, inbound)
 </s> add                          layer.name, layer, inbound) </s> remove                 layer_inputs = [compiled_layers[inp] for inp in inbound]
                logger.debug("Compiling layer '%s': layer inputs: %s", name, layer_inputs)
 </s> add                 layer_inputs = []
                for inp in inbound:
                    inbound_layer = compiled_layers[inp[0]]
                    if isinstance(inbound_layer, list) and len(inbound_layer) > 1:
                        # Multi output inputs
                        inbound_output_idx = inp[1]
                        logger.debug("Selecting output index %s from multi output inbound "
                                     "layer: %s", inbound_output_idx, inbound_layer)
                        layer_inputs.append(inbound_layer[inbound_output_idx])
                    else:
                        layer_inputs.append(inbound_layer)

                logger.debug("Compiling layer '%s': layer inputs: %s", layer.name, layer_inputs) </s> remove             layer = layer_dict[name]
 </s> add             inbound = struct[layer.name] </s> remove             compiled_layers[name] = model
        retval = KerasModel(self._inputs, model, name="{}_inference".format(saved_model.name))
 </s> add             compiled_layers[layer.name] = model
            retval = KerasModel(model_inputs, model, name="{}_inference".format(saved_model.name)) </s> remove         for name, inbound in struct.items():
            if name not in required_layers:
                logger.debug("Skipping unused layer: '%s'", name)
 </s> add         for layer in saved_model.layers:
            if layer.name not in struct:
                logger.debug("Skipping unused layer: '%s'", layer.name)
                model = model_inputs
                logger.debug("Adding model inputs %s: %s", layer.name, model)
              layer = layer_dict[name]
              logger.debug("Processing layer '%s': (layer: %s, inbound_nodes: %s)",
                           name, layer, inbound)
              if not inbound:
                model = model_inputs
                logger.debug("Adding model inputs %s: %s", layer.name, model)
                model = model_inputs
                logger.debug("Adding model inputs %s: %s", layer.name, model)
              else:
                  layer_inputs = [compiled_layers[inp] for inp in inbound]
                  logger.debug("Compiling layer '%s': layer inputs: %s", name, layer_inputs)
                  model = layer(layer_inputs)
              compiled_layers[name] = model
keep keep keep keep replace replace keep keep keep keep keep
 plugins.train.model.base - More robust inference model generation 
plugins/train/model/_base.py