Commit message (Collapse) | Author | Age | |
---|---|---|---|
* | Test GMM; it fails | Tom Smeding | 2024-11-10 |
| | |||
* | Fix bug in simplifier (effects are hard) | Tom Smeding | 2024-11-10 |
| | |||
* | Complete GMM implementation | Tom Smeding | 2024-11-10 |
| | |||
* | Cleanup, more Language operations | Tom Smeding | 2024-11-09 |
| | |||
* | Add Custom to Language | Tom Smeding | 2024-11-09 |
| | |||
* | Some more primitive operators | Tom Smeding | 2024-11-09 |
| | |||
* | Maximum/minimum | Tom Smeding | 2024-11-09 |
| | |||
* | WIP maximum/minimum | Tom Smeding | 2024-11-08 |
| | |||
* | Custom derivatives | Tom Smeding | 2024-11-08 |
| | |||
* | WIP custom derivatives | Tom Smeding | 2024-11-08 |
| | |||
* | Remove build1 | Tom Smeding | 2024-11-07 |
| | |||
* | Benchmark | Tom Smeding | 2024-11-07 |
| | |||
* | Some simplification rules | Tom Smeding | 2024-11-06 |
| | |||
* | Generate EOneHot in D[EIdx] | Tom Smeding | 2024-11-05 |
| | | | | | | This generates a one-hot for the zero-dimensional inner array because indexing one level further to the actual element is too difficult. But this should simplify away fine. | ||
* | Support EOneHot | Tom Smeding | 2024-11-05 |
| | |||
* | WIP EOneHot | Tom Smeding | 2024-11-04 |
| | |||
* | simplifyFix | Tom Smeding | 2024-10-29 |
| | |||
* | Store only on tape what's used in the dual | Tom Smeding | 2024-10-29 |
| | |||
* | WIP preserve only subset of D0 bindings in dual (...) | Tom Smeding | 2024-10-27 |
| | | | | | | | | | | | | | | | The point of this is to ensure that when an expression occurs in a Build, then the parts of D0 that are only there to make sharing work out for D1 are not laboriously taped in an array and preserved for D2, only for D2 to ignore them. However, while the subtape machinery is a good first step, this is not everything: the current Build translation makes a Build for the (elementwise) tape and separately a build for the primal. Because the primal _does_ generally need the subtaped-away stuff, we can't just not tape those. TODO: figure out how to resolve this / what the next step is. | ||
* | Fix build | Tom Smeding | 2024-10-27 |
| | |||
* | Better inline syntax for Language | Tom Smeding | 2024-10-27 |
| | |||
* | Fix EIdx derivative | Tom Smeding | 2024-10-26 |
| | |||
* | Show accumulator as dummy string, not error | Tom Smeding | 2024-10-26 |
| | |||
* | Fix IIxNil warning | Tom Smeding | 2024-10-26 |
| | |||
* | Make interpreter debug printing conditional | Tom Smeding | 2024-10-26 |
| | |||
* | Fix {} usage in pretty-printing of ELet | Tom Smeding | 2024-10-26 |
| | |||
* | Debugging | Tom Smeding | 2024-10-26 |
| | |||
* | Fix interpreter bug | Tom Smeding | 2024-10-22 |
| | |||
* | Less warnings | Tom Smeding | 2024-10-22 |
| | |||
* | Differentiate Replicate | Tom Smeding | 2024-10-22 |
| | |||
* | Tests | Tom Smeding | 2024-10-21 |
| | |||
* | WIP testing neural | Tom Smeding | 2024-10-18 |
| | |||
* | More towards test suite | Tom Smeding | 2024-10-14 |
| | |||
* | Towards a test suite | Tom Smeding | 2024-10-07 |
| | |||
* | Reverse-by-forward, and checking neural (it's wrong) | Tom Smeding | 2024-10-01 |
| | |||
* | Dual-numbers forward AD | Tom Smeding | 2024-09-28 |
| | |||
* | The size of the empty shape is 1, not 0 | Tom Smeding | 2024-09-26 |
| | |||
* | Test neural | Tom Smeding | 2024-09-25 |
| | |||
* | Add some missing cases | Tom Smeding | 2024-09-22 |
| | |||
* | Interpreter typechecks, at the cost of compositionality of RepAc | Tom Smeding | 2024-09-22 |
| | |||
* | Stuff | Tom Smeding | 2024-09-22 |
| | |||
* | Some hacking | Tom Smeding | 2024-09-22 |
| | |||
* | A little interpreter accum progress | Tom Smeding | 2024-09-16 |
| | |||
* | WIP Accum stuff | Tom Smeding | 2024-09-15 |
| | |||
* | WIP better zero/plus, fixing Accum (...) | Tom Smeding | 2024-09-13 |
| | | | | | | | | | | | | | The accumulator implementation was wrong because it forgot (in accumAdd) to take into account that values may be variably-sized. Furthermore, it was also complexity-inefficient because it did not build up a sparse value. Thus let's go for the Haskell-interpreter-equivalent of what a real, fast, compiled implementation would do: just a tree with mutable variables. In practice one can decide to indeed flatten parts of that tree, i.e. using a tree representation for nested pairs is bad, but that should have been done _before_ execution and for _all_ occurrences of that type fragment, not live at runtime by the accumulator implementation. | ||
* | Towards neural | Tom Smeding | 2024-09-12 |
| | |||
* | Interpreter, some operations | Tom Smeding | 2024-09-12 |
| | |||
* | Finish Accum implementation | Tom Smeding | 2024-09-11 |
| | |||
* | More WIP interpreter | Tom Smeding | 2024-09-11 |
| | |||
* | WIP interpreter | Tom Smeding | 2024-09-06 |
| |