def build(self):
""" Builds the model.
"""
if not self._parsed:
logger.warning('The model has not been parsed yet. We will try to '
'parse it without context, but this may easily fail. Make '
'sure Model.parse() is called before Model.build().')
self.parse(None)
logger.debug('Enumerating the model containers.')
# Construct the high-level network nodes.
nodes = self.enumerate_nodes(self.root)
logger.debug('Assembling the model dependency graph.')
input_nodes, output_nodes, network = self.assemble_graph(nodes)
if logger.isEnabledFor(logging.TRACE):
queue = deque(input_nodes.values())
while queue:
node = queue.popleft()
logger.trace('Assembled Node: %s', node.container.name)
logger.trace(' Uses: %s', ', '
.join([x.container.name for x in node.inputs]))
logger.trace(' Used by: %s', ', '
.join([x.container.name for x in node.outputs]))
logger.trace(' Aliases: %s', ', '.join(node.names))
queue.extend(node.outputs)
logger.debug('Connecting the model graph.')
inputs, input_aliases, outputs, output_aliases = \
self.build_graph(input_nodes, output_nodes, network)
logger.debug('Model inputs: %s', ', '.join(node for node in inputs))
logger.debug('Model outputs: %s', ', '.join(node for node in outputs))
self.inputs = inputs
self.outputs = outputs
self.network = network
self.input_aliases = input_aliases
self.output_aliases = output_aliases
self.key_cache = {}
self.compiled = None
###########################################################################
评论列表
文章目录