X-Git-Url: https://www.fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=README.md;h=7d515667c3633b48a30719fce1bb104f3693b437;hb=88c7c7e182bbaab9a49de49be77fe0895301ef1a;hp=f370b71e9ec62c0f2af82de24b78de461a375cc1;hpb=5ab7bf38f7a5d2a7d6656177471b887d67fbf5cd;p=dagnn.git diff --git a/README.md b/README.md index f370b71..7d51566 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -#Introduction# +# 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. -##Example## +## Example ## A typical use would be: @@ -48,13 +48,18 @@ 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## +# Usage # -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. +## Input and output ## + +The DAG can deal with modules which take as input and produce as +output tensors and nested tables of tensors. + +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. The input to the DAG (respectively the produced output) is a nested table of inputs reflecting the structure of the nested table of @@ -65,13 +70,13 @@ 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# +## Functions ## -##nn.DAG()## +### 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 two nodes @@ -80,21 +85,21 @@ 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) ### Similar to DAG:setInput(). -##nn.DAG:print()## +### nn.DAG:print() ### Prints the list of nodes. -##nn.DAG:saveDot(filename)## +### nn.DAG:saveDot(filename) ### 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 @@ -104,17 +109,5 @@ a pdf file with dot graph.dot -T pdf -o graph.pdf ``` -##nn.DAG:updateOutput(input)## - -See the torch documentation. - -##nn.DAG:updateGradInput(input, gradOutput)## - -See the torch documentation. - -##nn.DAG:accGradParameters(input, gradOutput, scale)## - -See the torch documentation. - -- *Francois Fleuret, Jan 13th, 2017*