VyntriVyntri
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.

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.

Folder structure
my_dataset/
  cats/
    cat_001.jpg
    cat_002.jpg
  dogs/
    dog_001.jpg
    dog_002.jpg
  birds/
    bird_001.jpg
    bird_002.jpg
fit_evaluate_predict.py
from 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:

Folder structure
my_dataset/
  train/
    cats/
      cat_001.jpg
    dogs/
      dog_001.jpg
  test/
    cats/
      cat_002.jpg
    dogs/
      dog_002.jpg
train_test.py
from 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:

Folder structure
my_dataset/
  train/
    cats/
    dogs/
    birds/
  val/
    cats/
    dogs/
    birds/
  test/
    cats/
    dogs/
    birds/
full_splits.py
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.

train_only.py
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%}")