Getting started

Installation

Install the package from PyPI:

python -m pip install rdr-eval

The distribution is named rdr-eval and the import package is named rdr.

Basic usage

The supplied model owns the single output activation and must return the final ratio estimate in (0, 2):

import torch
from rdr import Divergence, RDRTrainer

class RatioNet(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.layers = torch.nn.Sequential(
            torch.nn.Linear(8, 64),
            torch.nn.ReLU(),
            torch.nn.Linear(64, 1),
        )

    def forward(self, x):
        return 2.0 * torch.sigmoid(self.layers(x))

x_real = torch.randn(1_000, 8)
x_generated = torch.randn(1_000, 8) + 0.25

trainer = RDRTrainer(RatioNet(), divergence=Divergence.HELLINGER)
model, train_loss = trainer.fit(
    x_real,
    x_generated,
    validation_fraction=0.2,
    test_fraction=0.1,
    early_stopping_patience=20,
    restore_best=True,
)

ratios = trainer.score(x_real[:10])

Validation and testing

Validation loss controls early stopping and optional learning-rate scheduling. The test split is evaluated only after model selection. Results are available as trainer.validation_history, trainer.best_epoch, trainer.stopped_epoch, and trainer.test_loss.