Giter VIP home page Giter VIP logo

Comments (2)

mcabbott avatar mcabbott commented on May 23, 2024

Here's what's going on:

julia> @tullio res = identity(arr[i, j]) verbose=true 
┌ Warning: Symbolic gradient failed
│   err = no diffrule found for function identity(_).
└ @ Tullio ~/.julia/dev/Tullio/src/macro.jl:878
[ Info: left index ranges
┌ Info: reduction index ranges
│   i = Base.OneTo(5)
└   j = Base.OneTo(5)
25.0

That is, the default behaviour is to work out a symbolic gradient of the RHS, using Diffruls.jl. It turns out that nobody wrote a rule for identity, and certainly there will be no rule for foo. The macro sees only the symbol :foo, in general it has to assume that any function called :log behaves like Base.log, etc.

It is also possible to use dual numbers instead, in which case all that matters is that foo only contains operations which ForwardDiff understands:

using ForwardDiff
foo = sqrt
f_foo(arr) = @tullio res = foo(arr[i, j]) grad=Dual
gradient(f_foo, ones(5,5))[1]

from tullio.jl.

roflmaostc avatar roflmaostc commented on May 23, 2024

Hm, ok.
Yeah, what I wanted to try was to pass a function by reference to Tullio. So foo would have been
a differentiable function.

However, in my special case (similar to the metaprogramming #11 ) I could solve it with $foo where foo was assigned to be foo = :sqrt

Thanks!

from tullio.jl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.