-
-
Notifications
You must be signed in to change notification settings - Fork 216
Closed
JuliaDiff/ChainRules.jl
#337Description
I was having a go at implementing an NN for representing images as a xy→rgb (eg see https://bmild.github.io/fourfeat/) in Julia using Flux. But I encountered an internal error in Julia and my understanding is that this is always a bug.
Versions:
- Julia Version 1.6.0 (2021-03-24)
[deps]
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
ColorTypes = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
ColorVectorSpace = "c3611d14-8923-5661-9e6a-0046d554d3a4"
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
ImageDraw = "4381153b-2b60-58ae-a1ba-fd683676385f"
ImageShow = "4e3cecfd-b093-5904-9786-8bbb286a6a31"
Pluto = "c3e4b0f8-55cb-11ea-2926-15256bba5781"
Revise = "295af30f-e4ad-537b-8983-00126c2a3abe"
Reproduction code:
using ImageShow, ColorVectorSpace, ColorTypes, Flux, StaticArrays
(H,W) = (100, 200)
width = 256
col(x) = ColorTypes.RGB(x...)
model = (Chain(
Dense(2, width, relu),
Dense(width, width, relu),
Dense(width, width, relu),
Dense(width, 3, sigmoid),
))
ι = ([SA[i, j] for i=range(0.0, 1.0, length=H), j=range(0.0, 1.0, length=W)])
imtrue(x,y) = SA[cos(x*2) ^ 2, 0, cos(x + y) ^ 2]
im3 = [imtrue(x,y) for x=range(0.0, 1.0, length=H), y=range(0.0, 1.0, length=W)]
data = [(ι, im3)]
function loss(xy, rgb)
sum(norm.(model.(xy) .- rgb))
end
println(loss(ι, im3))
opt = Descent(0.01)
Flux.train!(loss, Flux.params(model), data, opt)
@show col.(model.(ι))
Expected output: it trains the network. I am not using cu
for CUDA explicitly so my understanding is that all of the above happens on the CPU.
Output:
Internal error: encountered unexpected error in runtime:
BoundsError(a=Array{Any, (2,)}[
Core.Compiler.VarState(typ=Zygote.Pullback{Tuple{typeof(StaticArrays._norm), StaticArrays.Size{(3,)}, StaticArrays.SArray{Tuple{3}, Float64, 1, 3}}, Any}, undef=false),
Core.Compiler.VarState(typ=Float64, undef=false)], i=(3,))
jl_bounds_error_ints at /usr/bin/../lib/julia/libjulia-internal.so.1 (unknown line)
unknown function (ip: 0x7fdfea5605bd)
unknown function (ip: 0x7fdfea55d038)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea55163b)
unknown function (ip: 0x7fdfea51880f)
unknown function (ip: 0x7fdfea27c3f0)
unknown function (ip: 0x7fdfea549347)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea549bf6)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea549bf6)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55de61)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea55163b)
unknown function (ip: 0x7fdfea51880f)
unknown function (ip: 0x7fdfea5189b2)
unknown function (ip: 0x7fdfea540127)
unknown function (ip: 0x7fdfea549827)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55de61)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea549bf6)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea549bf6)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55de61)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55de61)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55de61)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea513c35)
unknown function (ip: 0x7fdfea512cfb)
unknown function (ip: 0x7fdfea289594)
unknown function (ip: 0x7fdfea2895cf)
unknown function (ip: 0x7fdffb5bcf8d)
unknown function (ip: 0x7fdffb642b70)
unknown function (ip: 0x7fdffb5bb8df)
jl_apply_generic at /usr/bin/../lib/julia/libjulia-internal.so.1 (unknown line)
gradient at /home/edward/.julia/packages/Zygote/6HN9x/src/compiler/interface.jl:59
unknown function (ip: 0x7fdf5548d2fe)
macro expansion at /home/edward/.julia/packages/Flux/6BByF/src/optimise/train.jl:101 [inlined]
macro expansion at /home/edward/.julia/packages/Juno/n6wyj/src/progress.jl:134 [inlined]
#train!#36 at /home/edward/.julia/packages/Flux/6BByF/src/optimise/train.jl:99
train! at /home/edward/.julia/packages/Flux/6BByF/src/optimise/train.jl:97
unknown function (ip: 0x7fdf5548c381)
unknown function (ip: 0x7fdffb5d52c5)
unknown function (ip: 0x7fdffb5d4e85)
unknown function (ip: 0x7fdffb5d5a80)
unknown function (ip: 0x7fdffb5d6580)
top-level scope at /home/edward/Nerf.jl/train.jl:28
unknown function (ip: 0x7fdffb5f1777)
unknown function (ip: 0x7fdffb5f2407)
jl_toplevel_eval_in at /usr/bin/../lib/julia/libjulia-internal.so.1 (unknown line)
unknown function (ip: 0x7fdfea583877)
unknown function (ip: 0x7fdfea48090b)
unknown function (ip: 0x7fdfea480372)
unknown function (ip: 0x7fdfea21bdc9)
unknown function (ip: 0x7fdfea2207dc)
unknown function (ip: 0x7fdfea220945)
unknown function (ip: 0x7fdffb6148de)
repl_entrypoint at /usr/bin/../lib/julia/libjulia-internal.so.1 (unknown line)
main at julia (unknown line)
__libc_start_main at /usr/bin/../lib/libc.so.6 (unknown line)
_start at julia (unknown line)
ERROR: LoadError: BoundsError: attempt to access 2-element Vector{Any} at index [3]
Stacktrace:
[1] return_type(interp::Core.Compiler.NativeInterpreter, f::Any, t::Any)
@ Core.Compiler ./compiler/typeinfer.jl:963
[2] return_type(f::Any, t::Any, world::UInt64)
@ Core.Compiler ./compiler/typeinfer.jl:950
[3] return_type(f::Any, t::Any)
@ Core.Compiler ./compiler/typeinfer.jl:947
[4] collect(itr::Base.Generator)
@ Base ./array.jl:652
[5] map(::Function, ::Matrix{typeof(∂(norm))}, ::FillArrays.Fill{Float64, 2, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}})
@ Base ./abstractarray.jl:2383
[6] (::Zygote.var"#1077#1084")(ȳ::Any)
@ Zygote ~/.julia/packages/Zygote/6HN9x/src/lib/broadcast.jl:164
[7] (::Zygote.var"#3902#back#1088")(Δ::Any)
@ Zygote ~/.julia/packages/ZygoteRules/OjfTt/src/adjoint.jl:59
[8] (::Zygote.var"#180#181")(Δ::Any)
@ Zygote ~/.julia/packages/Zygote/6HN9x/src/lib/lib.jl:194
[9] (::Zygote.var"#1689#back#182")(Δ::Any)
@ Zygote ~/.julia/packages/ZygoteRules/OjfTt/src/adjoint.jl:59
[10] Pullback
@ ./broadcast.jl:1309 [inlined]
[11] (::typeof(∂(broadcasted)))(Δ::FillArrays.Fill{Float64, 2, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}})
@ Zygote ~/.julia/packages/Zygote/6HN9x/src/compiler/interface2.jl:0
[12] Pullback
@ ~/Nerf.jl/train.jl:24 [inlined]
[13] (::typeof(∂(loss)))(Δ::Float64)
@ Zygote ~/.julia/packages/Zygote/6HN9x/src/compiler/interface2.jl:0
[14] (::Zygote.var"#180#181")(Δ::Any)
@ Zygote ~/.julia/packages/Zygote/6HN9x/src/lib/lib.jl:194
[15] (::Zygote.var"#1689#back#182")(Δ::Any)
@ Zygote ~/.julia/packages/ZygoteRules/OjfTt/src/adjoint.jl:59
[16] Pullback
@ ~/.julia/packages/Flux/6BByF/src/optimise/train.jl:102 [inlined]
[17] (::typeof(∂(λ)))(Δ::Float64)
@ Zygote ~/.julia/packages/Zygote/6HN9x/src/compiler/interface2.jl:0
[18] (::Zygote.var"#69#70")(Δ::Any)
@ Zygote ~/.julia/packages/Zygote/6HN9x/src/compiler/interface.jl:252
[19] gradient(f::Function, args::Zygote.Params)
@ Zygote ~/.julia/packages/Zygote/6HN9x/src/compiler/interface.jl:59
[20] macro expansion
@ ~/.julia/packages/Flux/6BByF/src/optimise/train.jl:101 [inlined]
[21] macro expansion
@ ~/.julia/packages/Juno/n6wyj/src/progress.jl:134 [inlined]
[22] train!(loss::Function, ps::Zygote.Params, data::Vector{Tuple{Matrix{SVector{2, Float64}}, Matrix{SVector{3, Float64}}}}, opt::Descent; cb::Flux.Optimise.var"#40#46")
@ Flux.Optimise ~/.julia/packages/Flux/6BByF/src/optimise/train.jl:99
[23] train!(loss::Function, ps::Zygote.Params, data::Vector{Tuple{Matrix{SVector{2, Float64}}, Matrix{SVector{3, Float64}}}}, opt::Descent)
@ Flux.Optimise ~/.julia/packages/Flux/6BByF/src/optimise/train.jl:97
[24] top-level scope
@ ~/Nerf.jl/train.jl:28
in expression starting at /home/edward/Nerf.jl/train.jl:28
Metadata
Metadata
Assignees
Labels
No labels