Description
several comments about symbolic.h, please correct me if i'm wrong. our current procedure is
workload(neural network) -- 1 --> expression -- 2 --> dag -- 3 --> results
1. compose by `Symbol`
2. bind with input/context by `Executor`
3. execute by `DAGEngine`
Symbol often means an atomic symbol such as x
and y
in programming language. So Expression (or Symbolic Expression) is probably a better name here. The static syntax is
Expr e := Var[x] % a single variable x
list(x_1, ..., x_n) % a list of variables
op(e_1, ...., e_n) % operator takes several expressions as arguments
the current implementation breaks op(e_1, ...)
into Create(op)
and Compose
. But if we use the above syntax, Create(op)
returns an invalid expression since the arguments are not given.
StaticGraph is also not a perfect name. How about BatchExpr
? (static/const expression mean the expression can be evaluated at the compile time, but exactly the things we referring here).
Executor doesn't execute, it binds an expression into a dag and then executed by the dag engine. Or we probably use the name Binder
.
btw, does heads_
really means outputs_
, i have problem to think about the graph direction