// Explicit model/configuration variables; no files are created.
import aner.dataset
import aner.nn
import aner.ml

let parts = dataset.iris().partition(validation: 0.2, test: 0.2, seed: 81)
let network = nn.sequential(seed: 42)
    .dense(inputs: 4, outputs: 16, initialization: "he").relu()
    .dropout(probability: 0.2)
    .dense(inputs: 16, outputs: 3, initialization: "xavier")
let plan = ml.classifier(network, standardize: true,
    loss: "cross_entropy", optimizer: "adam")
    .on(device: "cpu", precision: "Float64", policy: "preserve")
    .dropout_seed(seed: 2026)
let config = ml.training(epochs: 20, batch: 16, rate: 0.01, seed: 91)
    .validation(parts.validation()).select_best(false)
let fitted = plan.fit(parts.train(), config: config)
print(fitted.summary())
print(fitted.evaluate(parts.test()).summary())
