All Projects → FluxML → Zygote.jl

FluxML / Zygote.jl

Licence: other
Intimate Affection Auditor

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Zygote.jl

Enzyme
High-performance automatic differentiation of LLVM.
Stars: ✭ 418 (-55.2%)
Mutual labels:  automatic-differentiation, gradient
autodiff
A .NET library that provides fast, accurate and automatic differentiation (computes derivative / gradient) of mathematical functions.
Stars: ✭ 69 (-92.6%)
Mutual labels:  automatic-differentiation, gradient
Granim.js
Create fluid and interactive gradient animations with this small javascript library.
Stars: ✭ 4,825 (+417.15%)
Mutual labels:  gradient
Pennylane
PennyLane is a cross-platform Python library for differentiable programming of quantum computers. Train a quantum computer the same way as a neural network.
Stars: ✭ 800 (-14.26%)
Mutual labels:  automatic-differentiation
Spark
🎨 An Android library to create gradient animation like Instagram&Spotify
Stars: ✭ 669 (-28.3%)
Mutual labels:  gradient
Hero Generator
🦸🏻‍♀️Hero Generator! Create a nice hero image for your site or app
Stars: ✭ 549 (-41.16%)
Mutual labels:  gradient
Flowing Gradient
Android Library to make a flowing gradient effect, similar to that used in Instagram Android login screen
Stars: ✭ 701 (-24.87%)
Mutual labels:  gradient
Gradient String
🌈 Beautiful color gradients in terminal output
Stars: ✭ 476 (-48.98%)
Mutual labels:  gradient
Owl
Owl - OCaml Scientific and Engineering Computing @ http://ocaml.xyz
Stars: ✭ 919 (-1.5%)
Mutual labels:  automatic-differentiation
Autodiff
automatic differentiation made easier for C++
Stars: ✭ 641 (-31.3%)
Mutual labels:  automatic-differentiation
Arraymancer
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
Stars: ✭ 793 (-15.01%)
Mutual labels:  automatic-differentiation
Thlabel
UILabel subclass, which additionally allows shadow blur, inner shadow, stroke text and fill gradient.
Stars: ✭ 636 (-31.83%)
Mutual labels:  gradient
Control Toolbox
The Control Toolbox - An Open-Source C++ Library for Robotics, Optimal and Model Predictive Control
Stars: ✭ 562 (-39.76%)
Mutual labels:  automatic-differentiation
Gradients
🌔 A curated collection of splendid 180+ gradients made in swift
Stars: ✭ 719 (-22.94%)
Mutual labels:  gradient
Fast Average Color
🍏🍊🍅 Fast Average Color
Stars: ✭ 531 (-43.09%)
Mutual labels:  gradient
Gradientify
Create beautiful, animated gradients with ease. This JS library provides you with an easy-to-use API to create and put animated gradients wherever you want on your website.
Stars: ✭ 16 (-98.29%)
Mutual labels:  gradient
Math
The Stan Math Library is a C++ template library for automatic differentiation of any order using forward, reverse, and mixed modes. It includes a range of built-in functions for probabilistic modeling, linear algebra, and equation solving.
Stars: ✭ 494 (-47.05%)
Mutual labels:  automatic-differentiation
Pytorch Cnn Visualizations
Pytorch implementation of convolutional neural network visualization techniques
Stars: ✭ 6,167 (+560.99%)
Mutual labels:  gradient
Complimentarygradientview
Create complementary gradients generated from dominant and prominent colors in supplied image. Inspired by Grade.js
Stars: ✭ 691 (-25.94%)
Mutual labels:  gradient
Pas Coogeo
Pas-CooGeo is coordinate geometry library for Pascal.
Stars: ✭ 25 (-97.32%)
Mutual labels:  gradient

CI Testing Dev Docs

] add Zygote

Zygote provides source-to-source automatic differentiation (AD) in Julia, and is the next-gen AD system for the Flux differentiable programming framework. For more details and benchmarks of Zygote's technique, see our paper. You may want to check out Flux for more interesting examples of Zygote usage; the documentation here focuses on internals and advanced AD usage.

Zygote supports Julia 1.0 onwards, but we highly recommend using Julia 1.3 or later.

julia> using Zygote

julia> f(x) = 5x + 3

julia> f(10), f'(10)
(53, 5)

julia> @code_llvm f'(10)
define i64 @"julia_#625_38792"(i64) {
top:
  ret i64 5
}

"Source-to-source" means that Zygote hooks into Julia's compiler, and generates the backwards pass for you – as if you had written it by hand.

Without compromising on performance, Zygote supports the full flexibility and dynamism of the Julia language, including control flow, recursion, closures, structs, dictionaries, and more.

julia> fs = Dict("sin" => sin, "cos" => cos, "tan" => tan);

julia> gradient(x -> fs[readline()](x), 1)
sin
0.5403023058681398

Defining custom gradients is a cinch, and errors have good stacktraces.

julia> using Zygote: @adjoint

julia> add(a, b) = a + b

julia> @adjoint add(a, b) = add(a, b), Δ -> (Δ, Δ)

To support large machine learning models with many parameters, Zygote can differentiate implicitly-used parameters, as opposed to just function arguments.

julia> W, b = rand(2, 3), rand(2);

julia> predict(x) = W*x .+ b;

julia> g = gradient(Params([W, b])) do
         sum(predict([1,2,3]))
       end
Grads(...)

julia> g[W], g[b]
([1.0 2.0 3.0; 1.0 2.0 3.0], [1.0, 1.0])
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].