horde-ad icon indicating copy to clipboard operation
horde-ad copied to clipboard

Higher Order Reverse Derivatives Efficiently - Automatic Differentiation library based on the paper "Provably correct, asymptotically efficient, higher-order reverse-mode automatic differentiation"

Results 41 horde-ad issues
Sort by recently updated
recently updated
newest added

I'm now leaning towards replicating the trick we have in Delta terms (Tom's Tree0 method --- a stamp per each term node). Then we could add the same stamp to...

help wanted

It should be such that `tupdate (tzero sh) ix v` is the transpose of `tindex v ix`. Also https://github.com/Mikolaj/horde-ad/blob/6f88617de23a4d9fb328b352cf43fcf4cffd97b8/simplified/HordeAd/Core/AstSimplify.hs#L433 Probably `tscatter` can then be simplified using `tupdate` similarly as `tgather`...

help wanted

Here's the Tom's idea from https://github.com/Mikolaj/horde-ad/issues/95#issuecomment-1503013877: > > the transposition can't be expressed as rewriting rules, because it's stateful. > > It's only stateful because it's Cayley-transformed. The eval function:...

help wanted

That would happen whenever a `Tensor` class code is instantiated to the `Ast` instance, in the same step that vectorization happens (I'm not sure how these two would interleave). This...

help wanted

Once a program is fully vectorized and so no higher order operations remain except `gather`, we should run a fusion transformation. However, the fusion should never create new higher order...

help wanted

It turns out our handling of `AstAppend` was broken https://github.com/Mikolaj/horde-ad/commit/d3ddcf76572f49406a5d729570c6424b88f391c0#diff-89b28a3b50641a4f5bea4f760c491a369d1245c655cb471abec544c7438bc90dR312-R316 and because in our system append can't be expressed as gather nor build, in desperation we now use rule (D)...

help wanted

Currently we just use vectors for the scaling factor in `eval1`, which is too dense and so not optimal, `MatrixOuter` for `eval2`, which is ad hoc, and tensors for `evalX`...

help wanted
performance

This is not urgent and, in fact, it's likely to complicate the code a lot without any benefit for neural network applications. Revisit when we have convincing other applications where...

performance
postpone

Once vectorization on strictly regular array expressions works (these are expressions that result in regular arrays even after vectorization), generalize it to irregular arrays. Optionally, at the end, check regularity...

postpone

For any rank higher than 0, literals such as `42` have ambiguous shape and in ranked tensors this ambiguity usually can't be resolved. Branch https://github.com/Mikolaj/horde-ad/tree/ban-ambiguous-shape bans such cases (actually rank...

postpone