-
# Introduction #
-This package implements a new module nn.DAG for the torch framework,
-which inherits from nn.Container and allows to combine modules in an
-arbitrary graph without cycle.
+This package implements a new module nn.DAG for the [torch framework](https://torch.ch),
+which inherits from [nn.Container](https://github.com/torch/nn/blob/master/Container.lua) and allows to combine modules in an
+arbitrary [Directed Acyclic Graph (DAG).](https://en.wikipedia.org/wiki/Directed_acyclic_graph)
## Example ##
modules given as argument 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
+input, since it is the input to the module a, and its output is a
table composed of two tensors, corresponding to the outputs of d and e
respectively.
Create a new empty DAG, which inherits from nn.Container.
-### nn.DAG:connect([module1 [, module2 [, ...]]]) ###
+### nn.DAG:connect(module1, module2 [, module3, [...]]) ###
Add new nodes corresponding to the modules passed as arguments if they
have not been already added in a previous call. Add edges between
-every two nodes associated to two successive modules in the arguments.
+every two nodes associated to two successive modules in the
+arguments.
Calling this function with n > 2 arguments is strictly equivalent to
calling it n-1 times on the pairs of successive arguments.
+Accepting more than two arguments allows in particular to add
+anonymous modules, which are not associated to variables. In principle
+the only ones that have to be non-anonymous are those that have more
+than one successor / predecessor and/or are inputs / outputs.
+
### nn.DAG:setInput(i) ###
-Defines the content and structure of the input. The argument should be
+Define the content and structure of the input. The argument should be
either a module, or a (nested) table of modules. The input to the DAG
-should be a (nested) table of inputs, with the corresponding structure.
+should be a (nested) table of inputs, with the corresponding
+structure.
### nn.DAG:setOutput(o) ###
### nn.DAG:print() ###
-Prints the list of nodes.
+Print the list of nodes.
### nn.DAG:saveDot(filename) ###
```
dot graph.dot -T pdf -o graph.pdf
```
-
---
-*Francois Fleuret, Jan 13th, 2017*