Examples
Dataset Layouts
Folder-per-class and explicit train/val/test split formats.
Dataset Layouts
Vyntri supports two layout types: folder-per-class (simplest) and explicit train/val/test splits.
Folder-per-class (recommended)
The most common layout. Just put images in folders named by class. Use split() to create explicit train/test partitions — this is the recommended way to avoid accidental data leakage.
my_dataset/
cats/
cat_001.jpg
cat_002.jpg
dogs/
dog_001.jpg
dog_002.jpg
birds/
bird_001.jpg
bird_002.jpgfrom vyntri import Vyntri
from vyntri.data import split
# Create an explicit train/test split
s = split("./my_dataset", train=0.7, test=0.2, seed=42)
model = Vyntri()
model.fit(train=s.train, val=s.val)
# Evaluate on the held-out test set
result = model.evaluate(s.test)
print(f"Accuracy: {result.accuracy:.1%}")
print(f"Macro F1: {result.macro_f1:.3f}")
# Predict a single image
pred = model.predict("./cats/cat_001.jpg")
print(f"{pred.label}: {pred.confidence:.1%}")Explicit train + test
When you have separate train and test folders, pass the paths explicitly:
my_dataset/
train/
cats/
cat_001.jpg
dogs/
dog_001.jpg
test/
cats/
cat_002.jpg
dogs/
dog_002.jpgfrom vyntri import Vyntri
model = Vyntri()
model.fit(train="./my_dataset/train")
# Evaluate on test/
result = model.evaluate("./my_dataset/test")
print(f"Test accuracy: {result.accuracy:.1%}")Explicit train + val + test
Full control over all three splits:
my_dataset/
train/
cats/
dogs/
birds/
val/
cats/
dogs/
birds/
test/
cats/
dogs/
birds/from vyntri import Vyntri
model = Vyntri()
model.fit(train="./my_dataset/train", val="./my_dataset/val")
# Evaluate on test/
result = model.evaluate("./my_dataset/test")
print(f"Test accuracy: {result.accuracy:.1%}")Training only (no validation)
You can fit with all data as training. Validation-dependent features (like backbone="auto" or target_accuracy) require explicit validation.
from vyntri import Vyntri
model = Vyntri()
model.fit("./my_dataset") # All images are training data
# Evaluate against a separate test layout
result = model.evaluate("./separate_test_folder")
print(f"Test accuracy: {result.accuracy:.1%}")