Flux is an elegant approach to machine learning. It's a 100% pure-Julia stack, and provides lightweight abstractions on top of Julia's native GPU and AD support. Flux makes the easy things easy while remaining fully hackable.
Works best with Julia 1.10 or later. Here's a very short example to try it out:
using Flux data = [(x, 2x-x^3) for x in -2:0.1f0:2] model = let w, b, v = (randn(Float32, 23) for _ in 1:3) # parameters x -> sum(v .* tanh.(w*x .+ b)) # callable end # model = Chain(vcat, Dense(1 => 23, tanh), Dense(23 => 1, bias=false), only) opt_state = Flux.setup(Adam(), model) for epoch in 1:100 Flux.train!((m,x,y) -> (m(x) - y)^2, model, data, opt_state) end using Plots plot(x -> 2x-x^3, -2, 2, label="truth") scatter!(model, -2:0.1f0:2, label="learned")
In Flux 0.15, almost any parameterised function in Julia is a valid Flux model -- such as this closure over w, b, v
. The same function can also be implemented with built-in layers as shown.
The quickstart page has a longer example. See the documentation for details, or the model zoo for examples. Ask questions on the Julia discourse or slack.
If you use Flux in your research, please cite our work.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4