FluxML / FluxJS.jl

I heard you like compile times
Other
42 stars 8 forks source link

@code_js gives error #8

Closed lokeshh closed 6 years ago

lokeshh commented 6 years ago

I tried the code in README and got following error

julia> using Flux, FluxJS
x = rand(10)

julia> x = rand(10)
10-element Array{Float64,1}:
 0.435232 
 0.723494 
 0.159166 
 0.862539 
 0.263976 
 0.833034 
 0.0607865
 0.989334 
 0.4656   
 0.115211 

julia> m = Chain(Dense(10,5,relu),Dense(5,2),softmax)
Chain(Dense(10, 5, NNlib.relu), Dense(5, 2), NNlib.softmax)

julia> @code_js m(x)
ERROR: UndefRefError: access to undefined reference
Stacktrace:
 [1] lookup_var_if_var at /home/lokesh/.julia/v0.6/ASTInterpreter2/src/ASTInterpreter2.jl:147 [inlined]
 [2] lookup(::ASTInterpreter2.JuliaStackFrame, ::SSAValue) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:21
 [3] broadcast_t(::Function, ::Type{Any}, ::Tuple{Base.OneTo{Int64}}, ::CartesianRange{CartesianIndex{1}}, ::ASTInterpreter2.JuliaStackFrame, ::Array{Any,1}) at ./broadcast.jl:258
 [4] broadcast_c at ./broadcast.jl:321 [inlined]
 [5] broadcast(::Function, ::ASTInterpreter2.JuliaStackFrame, ::Array{Any,1}) at ./broadcast.jl:455
 [6] callargs(::DebuggerFramework.DebuggerState) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:29
 [7] runall(::FluxJS.BTrace, ::DebuggerFramework.DebuggerState) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:34
 [8] overdub(::FluxJS.BTrace, ::Function) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:53
 [9] primitive(::FluxJS.Trace, ::Base.#broadcast, ::Function, ::Tuple{TrackedArray{…,Array{Float64,1}}}) at /home/lokesh/.julia/v0.6/Vinyl/src/hooks.jl:24
 [10] runall(::FluxJS.Trace, ::DebuggerFramework.DebuggerState) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:37
 [11] overdub(::FluxJS.Trace, ::Flux.Dense{NNlib.#relu,TrackedArray{…,Array{Float64,2}},TrackedArray{…,Array{Float64,1}}}, ::FluxJS.StagedArray{Float64,1}, ::Vararg{FluxJS.StagedArray{Float64,1},N} where N) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:53
 [12] #trace#6(::FluxJS.Trace, ::Function, ::Flux.Dense{NNlib.#relu,TrackedArray{…,Array{Float64,2}},TrackedArray{…,Array{Float64,1}}}, ::FluxJS.StagedArray{Float64,1}, ::Vararg{FluxJS.StagedArray{Float64,1},N} where N) at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:30
 [13] (::FluxJS.#kw##trace)(::Array{Any,1}, ::FluxJS.#trace, ::Flux.Dense{NNlib.#relu,TrackedArray{…,Array{Float64,2}},TrackedArray{…,Array{Float64,1}}}, ::FluxJS.StagedArray{Float64,1}, ::Vararg{FluxJS.StagedArray{Float64,1},N} where N) at ./<missing>:0
 [14] #_traceλ#9(::FluxJS.Trace, ::Function, ::Flux.Dense{NNlib.#relu,TrackedArray{…,Array{Float64,2}},TrackedArray{…,Array{Float64,1}}}, ::FluxJS.StagedArray{Float64,1}, ::Vararg{FluxJS.StagedArray{Float64,1},N} where N) at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:39
 [15] (::FluxJS.#kw##_traceλ)(::Array{Any,1}, ::FluxJS.#_traceλ, ::Flux.Dense{NNlib.#relu,TrackedArray{…,Array{Float64,2}},TrackedArray{…,Array{Float64,1}}}, ::FluxJS.StagedArray{Float64,1}, ::Vararg{FluxJS.StagedArray{Float64,1},N} where N) at ./<missing>:0
 [16] #tracecall#13(::FluxJS.Trace, ::Function, ::Flux.Dense{NNlib.#relu,TrackedArray{…,Array{Float64,2}},TrackedArray{…,Array{Float64,1}}}, ::FluxJS.StagedArray{Float64,1}, ::Vararg{FluxJS.StagedArray{Float64,1},N} where N) at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:50
 [17] (::FluxJS.#kw##tracecall)(::Array{Any,1}, ::FluxJS.#tracecall, ::Flux.Dense{NNlib.#relu,TrackedArray{…,Array{Float64,2}},TrackedArray{…,Array{Float64,1}}}, ::FluxJS.StagedArray{Float64,1}, ::Vararg{FluxJS.StagedArray{Float64,1},N} where N) at ./<missing>:0
 [18] macro expansion at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:58 [inlined]
 [19] primitive(::FluxJS.Trace, ::Flux.Dense{NNlib.#relu,TrackedArray{…,Array{Float64,2}},TrackedArray{…,Array{Float64,1}}}, ::FluxJS.StagedArray{Float64,1}) at /home/lokesh/.julia/v0.6/Vinyl/src/hooks.jl:24
 [20] runall(::FluxJS.Trace, ::DebuggerFramework.DebuggerState) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:37
 [21] overdub(::FluxJS.Trace, ::Function, ::FluxJS.StagedArray{Float64,1}, ::Vararg{Any,N} where N) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:53
 [22] #trace#6(::FluxJS.Trace, ::Function, ::Function, ::FluxJS.StagedArray{Float64,1}, ::Vararg{Any,N} where N) at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:30
 [23] (::FluxJS.#kw##trace)(::Array{Any,1}, ::FluxJS.#trace, ::Function, ::FluxJS.StagedArray{Float64,1}, ::Vararg{Any,N} where N) at ./<missing>:0
 [24] macro expansion at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:58 [inlined]
 [25] primitive(::FluxJS.Trace, ::Function, ::FluxJS.StagedArray{Float64,1}, ::Flux.Dense{NNlib.#relu,TrackedArray{…,Array{Float64,2}},TrackedArray{…,Array{Float64,1}}}) at /home/lokesh/.julia/v0.6/Vinyl/src/hooks.jl:24
 [26] runall(::FluxJS.Trace, ::DebuggerFramework.DebuggerState) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:37
 [27] overdub(::FluxJS.Trace, ::Function, ::Function, ::Vararg{Any,N} where N) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:53
 [28] #trace#6(::FluxJS.Trace, ::Function, ::Function, ::Function, ::Vararg{Any,N} where N) at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:30
 [29] (::FluxJS.#kw##trace)(::Array{Any,1}, ::FluxJS.#trace, ::Function, ::Function, ::Vararg{Any,N} where N) at ./<missing>:0
 [30] macro expansion at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:58 [inlined]
 [31] primitive(::FluxJS.Trace, ::Function, ::Function, ::Function, ::FluxJS.StagedArray{Float64,1}, ::Vararg{Any,N} where N) at /home/lokesh/.julia/v0.6/Vinyl/src/hooks.jl:24
 [32] runall(::FluxJS.Trace, ::DebuggerFramework.DebuggerState) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:37
 [33] overdub(::FluxJS.Trace, ::Function, ::Function, ::Vararg{Any,N} where N) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:53
 [34] #trace#6(::FluxJS.Trace, ::Function, ::Function, ::Function, ::Vararg{Any,N} where N) at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:30
 [35] (::FluxJS.#kw##trace)(::Array{Any,1}, ::FluxJS.#trace, ::Function, ::Function, ::Vararg{Any,N} where N) at ./<missing>:0
 [36] macro expansion at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:58 [inlined]
 [37] primitive(::FluxJS.Trace, ::Function, ::Function, ::Function, ::FluxJS.StagedArray{Float64,1}, ::Vararg{Any,N} where N) at /home/lokesh/.julia/v0.6/Vinyl/src/hooks.jl:24
 [38] runall(::FluxJS.Trace, ::DebuggerFramework.DebuggerState) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:37
 [39] overdub(::FluxJS.Trace, ::Function, ::Function, ::Vararg{Any,N} where N) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:53
 [40] #trace#6(::FluxJS.Trace, ::Function, ::Function, ::Function, ::Vararg{Any,N} where N) at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:30
 [41] (::FluxJS.#kw##trace)(::Array{Any,1}, ::FluxJS.#trace, ::Function, ::Function, ::Vararg{Any,N} where N) at ./<missing>:0
 [42] macro expansion at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:58 [inlined]
 [43] primitive(::FluxJS.Trace, ::Function, ::Function, ::FluxJS.StagedArray{Float64,1}, ::Array{Any,1}, ::Vararg{Array{Any,1},N} where N) at /home/lokesh/.julia/v0.6/Vinyl/src/hooks.jl:24
 [44] runall(::FluxJS.Trace, ::DebuggerFramework.DebuggerState) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:37
 [45] overdub(::FluxJS.Trace, ::Flux.Chain, ::FluxJS.StagedArray{Float64,1}, ::Vararg{FluxJS.StagedArray{Float64,1},N} where N) at /home/lokesh/.julia/v0.6/Vinyl/src/interpret.jl:53
 [46] #trace#6(::FluxJS.Trace, ::Function, ::Flux.Chain, ::FluxJS.StagedArray{Float64,1}, ::Vararg{FluxJS.StagedArray{Float64,1},N} where N) at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:30
 [47] (::FluxJS.#kw##trace)(::Array{Any,1}, ::FluxJS.#trace, ::Flux.Chain, ::FluxJS.StagedArray{Float64,1}, ::Vararg{FluxJS.StagedArray{Float64,1},N} where N) at ./<missing>:0
 [48] #_traceλ#9(::FluxJS.Trace, ::Function, ::Flux.Chain, ::Type{T} where T, ::Vararg{Type{T} where T,N} where N) at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:39
 [49] (::FluxJS.#kw##_traceλ)(::Array{Any,1}, ::FluxJS.#_traceλ, ::Flux.Chain, ::DataType, ::Vararg{DataType,N} where N) at ./<missing>:0
 [50] #traceλ#10(::FluxJS.Trace, ::Function, ::Flux.Chain, ::Type{T} where T, ::Vararg{Type{T} where T,N} where N) at /home/lokesh/.julia/v0.6/FluxJS/src/trace.jl:44
 [51] (::FluxJS.#kw##traceλ)(::Array{Any,1}, ::FluxJS.#traceλ, ::Flux.Chain, ::Type{T} where T, ::Vararg{Type{T} where T,N} where N) at ./<missing>:0
 [52] #compile#42 at /home/lokesh/.julia/v0.6/FluxJS/src/compile.jl:102 [inlined]
 [53] compile(::Flux.Chain, ::Array{Float64,1}) at /home/lokesh/.julia/v0.6/FluxJS/src/compile.jl:101
Roboneet commented 6 years ago

5 would help

lokeshh commented 6 years ago

@Roboneet That worked. Thank!