// Offline audited Dense classification with training, validation and final test roles.
import aner.dataset
import aner.nn
import aner.ml

let parts = dataset.iris().partition(validation: 0.2, test: 0.2, seed: 42)
let training = parts.train()
let validation = parts.validation()
let testing = parts.test()
print(training.rows())
print(validation.rows())
print(testing.rows())
let network = nn.mlp(inputs: 4, hidden: List(16, 8), outputs: 3, seed: 42)
let config = ml.training(epochs: 100, batch: 16, rate: 0.01, seed: 42)
    .validation(validation).select_best(true)
let plan = ml.classifier(network, standardize: true, optimizer: "adam")
let fitted = plan.fit(training, config: config)
let report = fitted.evaluate(testing)
print(fitted.training_loss() < fitted.initial_loss())
print(report.accuracy() >= 0.0 && report.accuracy() <= 1.0)
