Skip to content

Readme example with Flux no longer works #146

Closed
FluxML/Flux.jl
#2387
@DrChainsaw

Description

@DrChainsaw

I realize this package is half archived, but in case someone happens to see this and knows an easy fix.

Looks like it should "just" be a matter of implementing the Float32 conversion, although I don't know if it should be a noop or return the tracked float.

julia> versioninfo()
Julia Version 1.10.0-beta1
Commit 6616549950 (2023-07-25 17:43 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: 12 × Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, haswell)
  Threads: 1 on 12 virtual cores

(jl_a6AlLv) pkg> status
Status `E:\Temp\systmp\jl_a6AlLv\Project.toml`
  [587475ba] Flux v0.14.1
  [9f7883ad] Tracker v0.2.26

julia> using Flux, Tracker

julia> model = Chain(Dense(2 => 1, tanh), Dense(1 => 1, bias=false));

julia> withgradient(model, rand(Float32, 2)) do m, x
                sum(abs2, m(x))
           end
ERROR: MethodError: no method matching Float32(::Tracker.TrackedReal{Float32})

Closest candidates are:
  (::Type{T})(::Real, ::RoundingMode) where T<:AbstractFloat
   @ Base rounding.jl:207
  (::Type{T})(::T) where T<:Number
   @ Core boot.jl:790
  Float32(::IrrationalConstants.Invsqrt2π)
   @ IrrationalConstants E:\Programs\julia\.julia\packages\IrrationalConstants\vp5v4\src\macro.jl:113
  ...

Stacktrace:
  [1] convert(::Type{Float32}, x::Tracker.TrackedReal{Float32})
    @ Base .\number.jl:7
  [2] setindex!
    @ Tracker .\array.jl:1022 [inlined]
  [3] setindex!
    @ Tracker .\multidimensional.jl:698 [inlined]
  [4] macro expansion
    @ Tracker .\broadcast.jl:1004 [inlined]
  [5] macro expansion
    @ Tracker .\simdloop.jl:77 [inlined]
  [6] copyto!
    @ Tracker .\broadcast.jl:1003 [inlined]
  [7] copyto!
    @ Tracker .\broadcast.jl:956 [inlined]
  [8] materialize!
    @ Tracker .\broadcast.jl:914 [inlined]
  [9] materialize!
    @ Tracker .\broadcast.jl:911 [inlined]
 [10] accum!(x::Matrix{Float32}, Δ::Matrix{Tracker.TrackedReal{Float32}})
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:45
 [11] back(x::Tracker.Tracked{Matrix{Float32}}, Δ::Matrix{Tracker.TrackedReal{Float32}}, once::Bool)
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:48
 [12] #678
    @ Base E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:38 [inlined]
 [13] #64
    @ Base .\tuple.jl:628 [inlined]
 [14] BottomRF
    @ Base .\reduce.jl:86 [inlined]
 [15] _foldl_impl(op::Base.BottomRF{Base.var"#64#65"{Tracker.var"#678#679"{Bool}}}, init::Nothing, itr::Base.Iterators.Zip{Tuple{Tuple{Tracker.Tracked{}, Tracker.Tracked{}}, Tuple{Matrix{}, Vector{}}}})
    @ Base .\reduce.jl:58
 [16] foldl_impl
    @ Base .\reduce.jl:48 [inlined]
 [17] mapfoldl_impl
    @ Base .\reduce.jl:44 [inlined]
 [18] mapfoldl
    @ Base .\reduce.jl:175 [inlined]
 [19] foldl
    @ Base .\reduce.jl:198 [inlined]
 [20] foreach
    @ Base .\tuple.jl:628 [inlined]
 [21] back_(c::Tracker.Call{Tracker.var"#631#632"{TrackedArray{,Matrix{}}, TrackedArray{,Vector{}}}, Tuple{Tracker.Tracked{Matrix{}}, Tracker.Tracked{Vector{}}}}, Δ::Vector{Tracker.TrackedReal{Float32}}, once::Bool)
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:38
 [22] back(x::Tracker.Tracked{Vector{Tracker.TrackedReal{Float32}}}, Δ::Vector{Tracker.TrackedReal{Float32}}, once::Bool)
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:58
 [23] #678
    @ Base E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:38 [inlined]
 [24] #64
    @ Base .\tuple.jl:628 [inlined]
 [25] BottomRF
    @ Base .\reduce.jl:86 [inlined]
 [26] _foldl_impl(op::Base.BottomRF{Base.var"#64#65"{Tracker.var"#678#679"{Bool}}}, init::Nothing, itr::Base.Iterators.Zip{Tuple{Tuple{Tracker.Tracked{}, Nothing}, Tuple{Vector{}, Tracker.TrackedReal{}}}})        
    @ Base .\reduce.jl:58
 [27] foldl_impl
    @ Base .\reduce.jl:48 [inlined]
 [28] mapfoldl_impl(f::typeof(identity), op::Base.var"#64#65"{Tracker.var"#678#679"{Bool}}, nt::Nothing, itr::Base.Iterators.Zip{Tuple{Tuple{Tracker.Tracked{}, Nothing}, Tuple{Vector{}, Tracker.TrackedReal{}}}})  
    @ Base .\reduce.jl:44
 [29] mapfoldl(f::Function, op::Function, itr::Base.Iterators.Zip{Tuple{Tuple{Tracker.Tracked{Vector{}}, Nothing}, Tuple{Vector{Tracker.TrackedReal{}}, Tracker.TrackedReal{Float32}}}}; init::Nothing)
    @ Base .\reduce.jl:175
 [30] mapfoldl
    @ Base .\reduce.jl:175 [inlined]
 [31] foldl
    @ Base .\reduce.jl:198 [inlined]
 [32] foreach(::Function, ::Tuple{Tracker.Tracked{Vector{Tracker.TrackedReal{Float32}}}, Nothing}, ::Tuple{Vector{Tracker.TrackedReal{Float32}}, Tracker.TrackedReal{Float32}})
    @ Base .\tuple.jl:628
 [33] back_(c::Tracker.Call{Tracker.var"#back#674"{2, Base.Broadcast.var"#12#14"{…}, Tuple{…}}, Tuple{Tracker.Tracked{…}, Nothing}}, Δ::Vector{Tracker.TrackedReal{Float32}}, once::Bool)
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:38
 [34] back(x::Tracker.Tracked{Vector{Tracker.TrackedReal{Float32}}}, Δ::Vector{Tracker.TrackedReal{Float32}}, once::Bool)
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:58
 [35] #678
    @ Base E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:38 [inlined]
 [36] #64
    @ Base .\tuple.jl:628 [inlined]
 [37] BottomRF
    @ Base .\reduce.jl:86 [inlined]
 [38] _foldl_impl(op::Base.BottomRF{Base.var"#64#65"{Tracker.var"#678#679"{Bool}}}, init::Nothing, itr::Base.Iterators.Zip{Tuple{Tuple{Tracker.Tracked{}, Tracker.Tracked{}}, Tuple{Matrix{}, Vector{}}}})
    @ Base .\reduce.jl:58 [inlined]
 [39] foldl_impl
    @ Tracker .\reduce.jl:48 [inlined]
 [40] mapfoldl_impl
    @ Tracker .\reduce.jl:44 [inlined]
 [41] mapfoldl
    @ Tracker .\reduce.jl:175 [inlined]
 [42] foldl
    @ Tracker .\reduce.jl:198 [inlined]
 [43] foreach
    @ Tracker .\tuple.jl:628 [inlined]
--- the last 11 lines are repeated 1 more time ---
 [55] back_(c::Tracker.Call{Tracker.var"#599#600"{TrackedArray{,Vector{Tracker.TrackedReal{Float32}}}}, Tuple{Tracker.Tracked{Vector{Tracker.TrackedReal{Float32}}}}}, Δ::Tracker.TrackedReal{Float32}, once::Bool)    
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:38
 [56] back(x::Tracker.Tracked{Tracker.TrackedReal{Float32}}, Δ::Int64, once::Bool)
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:58
 [57] #back!#680
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:77 [inlined]
 [58] back!
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:74 [inlined]
 [59] #back!#13
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\lib\real.jl:18 [inlined]
 [60] back!(x::Tracker.TrackedReal{Tracker.TrackedReal{Float32}})
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\lib\real.jl:15
 [61] withgradient(::Function, ::Chain{Tuple{Dense{typeof(tanh), Matrix{Float32}, Vector{Float32}}, Dense{typeof(identity), Matrix{Float32}, Bool}}}, ::Vararg{Any})
    @ Tracker E:\Programs\julia\.julia\packages\Tracker\tdXqL\src\back.jl:4

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions