VyntriVyntri
Examples

Model Lifecycle

End-to-end fit, evaluate, save, load, and update workflows.

End-to-end: fit → evaluate → save → load → predict

full_workflow.py
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

fit_update_evaluate.py
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

fit_finetune_evaluate.py
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)

continual_sessions.py
# 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")