// Run in a fresh directory: this creates research.anermodel without overwriting.
// Iris: Fisher (1936), UCI, CC BY 4.0.
import aner.dataset
import aner.nn
import aner.ml
let split = dataset.iris().split(test: 0.2, seed: 2026)
let network = nn.sequential(seed: 42)
    .dense(inputs: 4, outputs: 8, initialization: "xavier").tanh()
    .dense(inputs: 8, outputs: 3, initialization: "xavier")
let plan = ml.classifier(network, standardize: true, optimizer: "adam").on("cpu")
let partial = plan.fit(split.train(), epochs: 100, rate: 0.02)
partial.save("research.anermodel")
let restored = ml.load_classifier("research.anermodel")
// Warm start restores fitted normalization AND Adam moments and update count.
let continued = plan.warm_start(restored).fit(split.train(), epochs: 100, rate: 0.02)
let uninterrupted = plan.fit(split.train(), epochs: 200, rate: 0.02)
print("Resumed and uninterrupted loss")
print(continued.training_loss())
print(uninterrupted.training_loss())
print(continued.summary())
print(continued.evaluate(split.test()).summary())
