Public Experiments
The public experiments are small package checks and learning cases. They are designed to exercise the same package surfaces used by larger SILVA studies: solvers, Jacobians, local/global branches, stacked architectures, preprocessing, and device placement.
Long training schedules, large result tables, and cached datasets are outside the compact package experiment suite.
The additive Cross-Family Compact Comparisons run 12 compatible family configurations across shared vector, graph, and field tasks. Result Records defines the metadata and evidence labels that accompany those measurements, while the Family Reproduction Dossiers provide the route from a compact check to official-data subsets and complete source protocols.
Run all three common-task suites and refresh their machine-readable record:
python experiments/reproduction/run_compact_comparisons.py
python scripts/generate_research_depth_material.py
Run a Config
Each run writes JSON metrics into experiments/public/outputs/.
Available Configs
| Config | Purpose |
|---|---|
solver_sweep.json |
Compare Picard, Anderson, and Broyden on a small fixed point |
graph_silva_smoke.json |
Train a small graph-level SILVA model on synthetic graph data |
vision_channels_smoke.json |
Train a tiny SILVA image model on synthetic channel data |
graph_operator_options.json |
Exercise SILVA graph modes: full, no-global, no-local, static, top-k, local-depth |
vision_vector_ablation.json |
Exercise hidden-channel vision modes: full, local-only, global-only, static, none |
molecular_smoke.json |
Exercise atom/bond encoders, bond-aware local interaction, graph global context, and regression readout |
iris_tabular_silva.json |
Download Iris, preprocess features, build a kNN graph, train SILVA |
wine_tabular_silva.json |
Download Wine, preprocess chemical features, train SILVA |
wdbc_tabular_silva.json |
Download WDBC, preprocess diagnostic features, train SILVA |
tabular_dataset_suite.json |
Run one compact SILVA pipeline across several public tabular datasets |
fully_configurable_graph.json |
Mix local/global/self terms, per-layer kwargs, and per-layer solvers in one stack |
custom_operator_experiment.json |
Use a custom local branch beyond the default operators |
Granular Configuration
Config files are plain JSON. The graph runner maps model fields directly into
SILVAGraphNetwork, so a user can change architecture without editing the
package:
| Field | Meaning |
|---|---|
hidden_dims |
one integer or one width per equilibrium layer |
local |
one local operator or one local operator per layer |
local_kwargs |
one kwargs object or one kwargs object per layer |
global_term |
one global operator or one global operator per layer |
global_kwargs |
one kwargs object or one kwargs object per layer |
self_term |
optional learned self branch per layer |
solver |
one SolverConfig object or one object per layer |
task |
"node" or "graph" prediction |
pooling |
graph readout pooling: "mean", "sum", or "max" |
device |
"auto", "cpu", "cuda", or "mps" |
For a three-layer stack,
The JSON arrays select \(L_\ell\), \(G_\ell\), \(H_\ell\), and the solver for
each layer \(\ell\). The "none" value removes a branch, while the damping term
\((1-\alpha)z_k\) remains part of the solver update.
Metrics
The standard residual is
For classification cases, the loss is cross entropy:
where \(a_{i,c}\) is the model logit for class \(c\).
Generate Figures
No generated figure files are committed. A metrics JSON file can be plotted from a notebook:
import json
import matplotlib.pyplot as plt
metrics = json.loads(open("experiments/public/outputs/solver_sweep_metrics.json").read())
names = [row["solver"] for row in metrics["results"]]
residuals = [row["residual"] for row in metrics["results"]]
plt.bar(names, residuals)
plt.yscale("log")
Where to Go Next
| Question | Page |
|---|---|
| Which measured summaries are available? | Benchmark Cards |
| Which public datasets are configured? | Dataset Cases |
| Which API runs and overrides configurations? | Public Experiments API |