Initial commit.
authorFrancois Fleuret <francois@fleuret.org>
Thu, 12 Jan 2017 17:46:15 +0000 (18:46 +0100)
committerFrancois Fleuret <francois@fleuret.org>
Thu, 12 Jan 2017 17:46:15 +0000 (18:46 +0100)
README.md [new file with mode: 0644]

diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..3b8d274
--- /dev/null
+++ b/README.md
@@ -0,0 +1,51 @@
+
+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#
+
+The typical use is:
+
+```Lua
+model = nn.DAG()
+
+a = nn.Linear(100, 10)
+b = nn.ReLU()
+c = nn.Linear(10, 15)
+d = nn.Linear(10, 15)
+e = nn.CMulTable()
+f = nn.Linear(15, 15)
+
+model:addEdge(a, b)
+model:addEdge(b, c)
+model:addEdge(b, d)
+model:addEdge(c, e)
+model:addEdge(d, e)
+model:addEdge(d, f)
+
+model:setInput(a)
+model:setOutput({ e, f })
+
+input = torch.Tensor(300, 100):uniform()
+output = model:updateOutput(input):clone()
+
+```
+
+which would encode the following graph
+
+                       +--> c ----> e -->
+                      /            /
+                     /            /
+    input --> a --> b ----> d ---+          output
+                             \
+                              \
+                               +--> f -->
+
+#Input and output#
+
+If a node has a single successor, its output is sent unchanged as input to that successor. If it has multiple successors, the outputs are collected into a table, and the table is used as input to the successor node. The indexes of the outputs in that table reflects the order in which they appear in the addEdge commands.
+
+The expected input (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 DAG 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 e and f respectively.
+
+*Francois Fleuret, Jan 12th, 2017*