Examples
Model Lifecycle
End-to-end fit, evaluate, save, load, and update workflows.
End-to-end: fit → evaluate → save → load → predict
from vyntri import Vyntri
from vyntri.data import split
# 0. Create explicit split
s = split("./my_dataset", train=0.7, test=0.2, seed=42)
# 1. Fit
model = Vyntri()
model.fit(train=s.train, val=s.val)
print(f"Validation accuracy: {model.validation_accuracy_:.1%}")
print(f"Classes: {list(model.classes_)}")
# 2. Evaluate
result = model.evaluate(s.test)
print(f"Test accuracy: {result.accuracy:.1%}")
# 3. Predict
pred = model.predict("./new_photo.jpg")
print(f"Prediction: {pred.label} ({pred.confidence:.1%})")
# 4. Save
model.save("my_model.vyntri")
# 5. Load (in another script)
loaded = Vyntri.load("my_model.vyntri")
pred = loaded.predict("./new_photo.jpg")
print(f"Loaded prediction: {pred.label}")Fit → update → evaluate
from vyntri import Vyntri
from vyntri.data import split
# Initial fit with explicit split
s = split("./initial_data", train=0.7, test=0.2, seed=42)
model = Vyntri()
model.fit(train=s.train, val=s.val)
print(f"Classes: {list(model.classes_)}")
# Add new data (new classes detected automatically)
result = model.update("./new_data")
print(f"New classes: {result.new_classes}")
print(f"Classes now: {result.classes_after}")
# Evaluate on a held-out test set
eval_result = model.evaluate("./test_data")
print(f"Accuracy: {eval_result.accuracy:.1%}")Fit → fine-tune → evaluate
from vyntri import Vyntri
from vyntri.data import split
# Create splits
s = split("./my_dataset", train=0.7, test=0.2, seed=42)
# Fit analytically first
model = Vyntri()
model.fit(train=s.train, val=s.val)
# Fine-tune for extra accuracy
model.fine_tune(s, scope="last_layer", epochs=5)
# Evaluate
result = model.evaluate(s.test)
print(f"Accuracy after fine-tuning: {result.accuracy:.1%}")Load → update → save (continual learning across sessions)
# Session 1: Fit and save
from vyntri import Vyntri
from vyntri.data import split
s = split("./session1_data", train=0.7, test=0.2, seed=42)
model = Vyntri()
model.fit(train=s.train, val=s.val)
model.save("model.vyntri")
# Session 2: Load and update
model = Vyntri.load("model.vyntri")
result = model.update("./session2_data")
print(f"Added: {result.new_classes}")
# Session 3: Load and update again
model.save("model.vyntri")
model = Vyntri.load("model.vyntri")
result = model.update("./session3_data")
model.save("model.vyntri")