3 ms·
Those are based on overloading functions to add the new behaviors (computing the forward diff or building the graph within a special variable for the reverse mo
by ddragon 7y ago
Those are based on overloading functions to add the new behaviors (computing the forward diff or building the graph within a special variable for the reverse mode) which in Julia is implemented for example in [1], [2], [3] and [4], while the one in OP is based on source analysis and transformation.
And the similarities with Lisp are more than just the parser being written in it, Julia's programming paradigm is based on the CLOS, everything is an expression, hygienic macros and reader macros and code is data. It mostly just lacks sexpr.
[1] https://github.com/JuliaDiff/ForwardDiff.jl https://github.com/JuliaDiff/ForwardDiff.jl
[2] https://github.com/dfdx/Yota.jl https://github.com/dfdx/Yota.jl
[3] https://github.com/denizyuret/AutoGrad.jl https://github.com/denizyuret/AutoGrad.jl (from the Knet framework)
[4] https://fluxml.ai/Flux.jl/stable/internals/tracker/ https://fluxml.ai/Flux.jl/stable/internals/tracker/ (from the Flux framework)
- eggy 7y agoWow, thank you for such an informative reply! I am going to try this out. One of my pet peeves with Julia is that my main machine is a Windows 10 box, and things like cudanative.jl say they only install on Mac and Linux. I have an old 2013 Linux box (Lenovo T430u laptop). BTW, do you recommend Julia Pro install or vanilla Julia and build up for more general technical programming, not just ML and DL.
- ddragon 7y agoI prefer vanilla Julia since it has all the packages at the latest released versions and it's the most used so it's easier to get help. CUDANative.jl documentation doesn't mention being mac/linux only (the only mention was in the 2 year old preview release), and if it is maybe you could try another library like ArrayFire.jl. And more general technical programming is Julia specialty (it was built for that as a high performance interactive language), the DL hype started after the language was first released.