Comments (2)
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.
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)
- Alternative to Tullio for Chained Multiplication HOT 4
- @views macro causes module compilation failure HOT 3
- Reporting a bug when Tullio being included with LoopVectorization HOT 1
- [Question] Is it possible to create a vector of SVectors from a Matrix using Tullio? HOT 2
- [Question] How to change summation order? HOT 5
- Use package extensions HOT 1
- How finalizers `|>` work HOT 5
- Method error when broadcast and sum of matrices HOT 1
- GPU Kernel Compilation Failed with Interpolations HOT 2
- Upgrade to CUDA.CUDAKernels HOT 9
- Bug when using Tullio + LoopVectorization HOT 5
- Add Finch.jl backend HOT 4
- CUDA v4 support HOT 2
- Using threads, vs setting threads=false gives different result HOT 3
- Issue with vectorized functions on GPU HOT 3
- Error when specifying the range of an index with a UnitRange HOT 4
- Scalar indexing with CUDA HOT 10
- Please update dep of FillArrays to v1.
- Bad interaction with Enzyme? HOT 6
- Zygote with Tullio gives wrong gradients/pullbacks using CUDA HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tullio.jl.