X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=README.md;h=1d6f5bd811b5706b39890c13fe4d5404dc7768c1;hb=07a8c54a66b01f342e4d03ca2cf99710d56806d0;hp=b122ee02b215bbac8facd672a361a6ef9cf29a1f;hpb=d8fd868f94ce0b66cd2cc1a4615df10a88b5d5ec;p=dagnn.git diff --git a/README.md b/README.md index b122ee0..1d6f5bd 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ #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## @@ -42,56 +44,70 @@ which would encode the following graph 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. + +#Usage# ##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. +The DAG can deal with modules which take as input and produce as +output tensors and nested tables of tensors. -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) +If a node has a single predecessor, the output of the latter is taken +as-is as the input of the former. 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 edges where created in the DAG:connect() commands. -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. +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) -#Usage# +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. -##nn.DAG()## +##Functions## + +###nn.DAG()### Create a new empty DAG, which inherits from nn.Container. -##nn.DAG:connect([module1 [, module2 [, ...]]])## +###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. + +Calling it with n > 2 arguments is strictly equivalent to calling it +n-1 times on the pairs of successive arguments. -##nn.DAG:setInput(i)## +###nn.DAG:setInput(i)### Defines the content and structure of the input. The argument should be -either a module, or a (nested) table of module. The input to the DAG -should be a (nested) table of inputs with the corresponding structure. +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. -##nn.DAG:setOutput(o)## +###nn.DAG:setOutput(o)### -Same as DAG:setInput. +Similar to DAG:setInput(). -##nn.DAG:print()## +###nn.DAG:print()### Prints the list of nodes. -##nn.DAG:saveDot(filename)## - -Save a dot file to be used by the Graphviz set of tools for graph visualization. +###nn.DAG:saveDot(filename)### -##nn.DAG:updateOutput(input)## +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 -See the torch documentation. - -##nn.DAG:updateGradInput(input, gradOutput)## - -See the torch documentation. - -##nn.DAG:accGradParameters(input, gradOutput, scale)## - -See the torch documentation. +``` +dot graph.dot -T pdf -o graph.pdf +``` +-- *Francois Fleuret, Jan 13th, 2017*