Skip to content

Roadmap

H.P. Gansevoort edited this page Sep 23, 2026 · 8 revisions

Roadmap

In order, because each row needs the one above it. No dates: a row moves when it is true, and the changelog is where it says so.

What it is Why it comes here
Done Shape, Tensor, ITensorBackend, CpuBackend Everything else is written in terms of these.
Done Pipeline The artefact PDD is named after: collect, add features, normalise, fill gaps, split — declared once, fitted on train alone, replayed unchanged on everything after. It came first because every later row is written in terms of it, and because the leak it prevents is invisible once it has happened.
Done Notebook The same pipeline written as a Verso notebook, one block per step, with the data, a profile and a heatmap at any block. It needed only the pipeline, so it did not wait for the rows below.
1 Automatic differentiation A network learns by knowing which way to move. Without a gradient there is no training loop, so this is the one piece nothing can be faked around.
2 The layers Dense, activation, dropout, normalisation, convolution. Each is a forward pass and its gradient, so each needs the row above to exist first.
3 Losses and optimizers Cross-entropy and mean squared error; SGD, Adam and a learning-rate schedule. The parts that turn a gradient into a change.
4 The training loop Batches, epochs, validation, early stopping, checkpoints — and the metrics object the charts are drawn from.
5 The two vocabularies Stack layers, compile and fit — the words TensorFlow and Keras use — or write the forward pass yourself, the way PyTorch does. The declarative side is a builder that lowers onto the same model the imperative side produces, so nothing downstream knows which door was used.
6 The charts An optional package that draws with MatPlotLibNet: loss curve, confusion matrix, learning-rate schedule — all from the loop's own metrics, with no viewer to start.
7 A TorchSharp backend The same model, running its arithmetic on libtorch, including a GPU. Its own package: a project that does not want it never carries it, and no model changes because of it. Together with the training loop this is the short version of what the library does — you write it the way TensorFlow taught you, and Torch runs it.
8 Loading what already exists Reading weights trained elsewhere, so a model does not have to begin here to run here.

What is not on this list

Hand-written GPU code. Reaching a GPU means using an engine that already does, through the seam. No CUDA is written here, and the GPU training host it would reach stays a separate project.

A second network representation. No separate graph beside the model, however convenient it would be for one feature. Two engines to keep in step diverge on the first unusual model, and then every bug is asked twice.

Matching a Python API call for call. Names that are clear in C# beat names that are familiar from Python. Where the two agree, the familiar one wins; where they do not, the reader here comes first.

Clone this wiki locally