An stb-style set of single-header machine learning libraries.
This library was created to provide a very small machine learning framework that can be used in tiny C projects, without external dependencies or unnecessary complexity.
Each header listed below includes the source code of all headers that come before it. For example, header (2) epoch/egrad.h depends on (1) and (0), and therefore embeds their implementations. Similarly, header (3) depends on (2), (1), and (0).
Because of this design, including more than one header at the same time will cause symbol redefinition errors.
(0) epoch/earena.h Standalone single-header arena allocator.
(1) epoch/etensor.h Standalone single-header tensor library (tensors only).
(2) epoch/egrad.h Standalone single-header automatic differentiation engine. Includes tensor support internally.
(3) epoch.h Standalone single header that includes the arena allocator, tensors, and automatic differentiation, and implements basic neural network utilities on top of them.
epoch_cuda has not been implemented yet, as I currently do not have access to a GPU for developing and testing CUDA code.