#Introduction#
-This package implements a new module nn.DAG which inherits from nn.Container and allows to combine modules in an arbitrary graph without cycle.
+This package implements a new module nn.DAG which inherits from
+nn.Container and allows to combine modules in an arbitrary graph
+without cycle.
##Example##
and run a forward pass with a random batch of 30 samples.
-Note that DAG:connect allows to add a bunch of edges at once. This is particularly useful to add anonymous modules which have a single predecessor and successor.
+Note that DAG:connect allows to add a bunch of edges at once. This is
+particularly useful to add anonymous modules which have a single
+predecessor and successor.
##Input and output##
-If a node has a single predecessor, its output is taken as-is. If it has multiple predecessors, all the outputs are collected into a table, and the table is used as input. The indexes of the outputs in that table reflects the order in which the predecessors appeared in the DAG:connect() commands.
+If a node has a single predecessor, its output is taken as-is. If it
+has multiple predecessors, all the outputs are collected into a table,
+and the table is used as input. The indexes of the outputs in that
+table reflects the order in which the predecessors appeared in the
+DAG:connect() commands.
-The input to the DAG (respectively the produced output) is a nested table of inputs reflecting the structure of the nested table of modules provided to DAG:setInput (respectively DAG:setOutput)
+The input to the DAG (respectively the produced output) is a nested
+table of inputs reflecting the structure of the nested table of
+modules provided to DAG:setInput (respectively DAG:setOutput)
-So for instance, in the example above, the model expects a tensor as input, since it is the input to the module a, and its output will is a table composed of two tensors, corresponding to the outputs of d and e respectively.
+So for instance, in the example above, the model expects a tensor as
+input, since it is the input to the module a, and its output will is a
+table composed of two tensors, corresponding to the outputs of d and e
+respectively.
#Usage#
##nn.DAG:connect([module1 [, module2 [, ...]]])##
Add new nodes corresponding to the modules passed as arguments if they
-are not already existing. Add edges between every the nodes
-corresponding to pairs of successive modules.
+are not already existing. Add edges between every two nodes
+corresponding to a pair of successive modules in the arguments.
##nn.DAG:setInput(i)##
##nn.DAG:setOutput(o)##
-Same as DAG:setInput.
+Similar to DAG:setInput().
##nn.DAG:print()##
##nn.DAG:saveDot(filename)##
-Save a dot file to be used by the Graphviz set of tools for graph visualization.
+Save a dot file to be used by the Graphviz set of tools for graph
+visualization. This dot file can than be used for instance to produce
+a pdf file with
+
+```
+dot graph.dot -T pdf -o graph.pdf
+```
##nn.DAG:updateOutput(input)##