Skip to content

3.0.0rc3

This is the third release candidate for version 3.0.0. It changes defaults and sampler behavior that are easier to change before the final release. The 3.0.0rc1 notes describe version 3 as a whole, and the migration guide covers version 2 names.

Changed defaults

  • DotProductSimilarity() now computes a plain dot product. Pass normalize_embeddings=True for the previous behavior. NPairsLoss and NormalizedSoftmaxLoss request normalization explicitly, so their default objectives do not change (#670).
  • TripletMarginLoss now defaults to margin=0.2, matching TripletMarginMiner and FaceNet. Pass margin=0.05 for the previous default (#466).

New features

  • SelfSupervisedLoss accepts more than two views: loss_func(view_1, view_2, view_3). All views of a sample are positives of each other, and they reach the wrapped loss in one call. With symmetric=False, only the first view provides anchors (#580).

Sampler changes

  • MPerClassSampler now yields whole batches. Pass it as DataLoader(dataset, batch_sampler=sampler) and remove the DataLoader batch_size. batch_size is a required sampler argument, and num_batches replaces num_samples (#612).
  • MPerClassSampler rotates through shuffled passes of classes and of each class's examples. Class counts, and example counts within a class, stay within one of each other. The default length visits every example at least once, and exactly once when equal class sizes divide evenly. See the coverage guarantees (#684).

Documentation

  • The macOS OpenMP section now covers using Faiss and UMAP in one process. Importing this package loads neither Faiss nor UMAP, so the conflict arises only when an application uses Faiss with PyTorch (#617).

  • Recipe pages link to readable source on GitHub for the matching release instead of Python files that browsers download.