Renamed DAG:addEdge to DAG:connect
authorFrancois Fleuret <francois@fleuret.org>
Fri, 13 Jan 2017 06:43:51 +0000 (07:43 +0100)
committerFrancois Fleuret <francois@fleuret.org>
Fri, 13 Jan 2017 06:43:51 +0000 (07:43 +0100)
README.md
dagnn.lua
test-dagnn.lua

index 91c7684..2ff5b99 100644 (file)
--- a/README.md
+++ b/README.md
@@ -14,11 +14,11 @@ c = nn.Linear(10, 15)
 d = nn.CMulTable()
 e = nn.Linear(15, 15)
 
-model:addEdge(a, b)
-model:addEdge(b, nn.Linear(10, 15), nn.ReLU(), d)
-model:addEdge(b, c)
-model:addEdge(c, d)
-model:addEdge(c, nn.Mul(-1), e)
+model:connect(a, b)
+model:connect(b, nn.Linear(10, 15), nn.ReLU(), d)
+model:connect(b, c)
+model:connect(c, d)
+model:connect(c, nn.Mul(-1), e)
 
 model:setInput(a)
 model:setOutput({ d, e })
@@ -40,14 +40,14 @@ which would encode the following graph
 
 and run a forward pass with a random batch of 30 samples.
 
-Note that DAG:addEdge 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 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.
+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 of the DAG:connect() 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 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.
 
-*Francois Fleuret, Jan 12th, 2017*
+*Francois Fleuret, Jan 13th, 2017*
index c6d54ad..9203264 100755 (executable)
--- a/dagnn.lua
+++ b/dagnn.lua
@@ -42,7 +42,7 @@ end
 
 -- The main use should be to add an edge between two modules, but it
 -- can also add a full sequence of modules
-function DAG:addEdge(...)
+function DAG:connect(...)
    self.sorted = nil
    local prev
    for _, nnm in pairs({...}) do
index 53302fd..366e98f 100755 (executable)
@@ -76,13 +76,13 @@ function printTensorTable(t)
    end
 end
 
---               +- Linear(10, 10) -> ReLU ---> d --+
---              /                              /     \
---             /                              /       \
---  --> a --> b -----------> c --------------+         e -->
---                            \                       /
---                             \                     /
---                              +-- Mul(-1) --------+
+--               +-- Linear(10, 10) --> ReLU --> d --+
+--              /                              /      \
+--             /                              /        \
+--  --> a --> b -----------> c --------------+          e -->
+--                            \                        /
+--                             \                      /
+--                              +----- Mul(-1) ------+
 
 model = nn.DAG()
 
@@ -92,12 +92,12 @@ c = nn.Linear(10, 15)
 d = nn.CMulTable()
 e = nn.CAddTable()
 
-model:addEdge(a, b)
-model:addEdge(b, nn.Linear(10, 15), nn.ReLU(), d)
-model:addEdge(d, e)
-model:addEdge(b, c)
-model:addEdge(c, d)
-model:addEdge(c, nn.Mul(-1), e)
+model:connect(a, b)
+model:connect(b, nn.Linear(10, 15), nn.ReLU(), d)
+model:connect(d, e)
+model:connect(b, c)
+model:connect(c, d)
+model:connect(c, nn.Mul(-1), e)
 
 model:setInput(a)
 model:setOutput(e)
@@ -109,4 +109,5 @@ output:uniform()
 
 print('Error = ' .. checkGrad(model, nn.MSECriterion(), input, output))
 
+print('Writing /tmp/graph.dot')
 model:dot('/tmp/graph.dot')