[ANN-RFC] TopoChains.jl v0.1 - flexibly define multi-input multi-output models

Pleased to announce TopoChains.jl to the community. TopoChains.jl extends on the flexibility of Flux’s Chain by introducing TopoChain, which allows you to explicitly declare the structure of the compositions of functions that make up a model (and builds directly on the work originally done for the Stacks submodule in Transformers.jl). The goal is to make it simpler and more accessible to write complex multi-input multi-output models in the Julia machine learning ecosystem.

For instance, the following model

can be written concisely as

topo = @functopo x => a:x => b:(a, b) => c => o

model = TopoChain(topo,
            Dense(32, 64),
            Dense(32, 64),
            (x, y) -> x .* y, 
            Dropout(0.1))

I’d greatly appreciate feedback on both the package itself, as well as the quality of the documentation (this is my first time creating a Julia package, and I’d be humbled to know more about the norms of package writing in Julia).

The package is currently being added to the Registry, but you can get an early preview by directly adding it from GitHub. I wanted to get started on obtaining feedback during that time, and I’ll also update this post once the merge into the Registry is completed.

6 Likes