stateless

This commit is contained in:
Mike J Innes 2017-06-02 16:11:09 +01:00
parent d1f370a2f1
commit 50bbb87674
2 changed files with 10 additions and 1 deletions

View File

@ -6,7 +6,7 @@ using MacroTools, Lazy, DataFlow, Juno
using DataFlow: graphm, syntax, prewalk!, postwalk!, prewalk, postwalk, using DataFlow: graphm, syntax, prewalk!, postwalk!, prewalk, postwalk,
iscyclic, Constant, constant, isconstant, group, Split, splitnode, iscyclic, Constant, constant, isconstant, group, Split, splitnode,
detuple, value, inputs, thread!, value, inputs, Split, splitnode, inputnode, detuple, value, inputs, thread!, value, inputs, Split, splitnode, inputnode,
spliceinputs, bumpinputs, Line, Frame, applylines spliceinputs, bumpinputs, Line, Frame, applylines, graphinputs
using DataFlow.Interpreter using DataFlow.Interpreter
using Juno: Tree, Row using Juno: Tree, Row

View File

@ -136,6 +136,15 @@ function unroll(model, n)
SeqModel(Stateful(Capacitor(graph), state), n) SeqModel(Stateful(Capacitor(graph), state), n)
end end
function stateless(s::Stateful)
v = graph(s.model)
v = spliceinputs(v, group(constant.(s.states)...),
[inputnode(i) for i = 1:graphinputs(v)-1]...)
Capacitor(v)
end
stateless(s::SeqModel) = SeqModel(stateless(s.model), s.steps)
function unseqin(v::IVertex) function unseqin(v::IVertex)
prewalk(v) do v prewalk(v) do v
# TODO: inputidx function # TODO: inputidx function