# 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](3.0.0rc1.md) describe version 3 as a whole, and the [migration guide](../migration-2-to-3.md) 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](https://github.com/KevinMusgrave/pytorch-metric-learning/issues/670)). - `TripletMarginLoss` now defaults to `margin=0.2`, matching `TripletMarginMiner` and FaceNet. Pass `margin=0.05` for the previous default ([#466](https://github.com/KevinMusgrave/pytorch-metric-learning/issues/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](https://github.com/KevinMusgrave/pytorch-metric-learning/issues/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](https://github.com/KevinMusgrave/pytorch-metric-learning/issues/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](../samplers.md#coverage-guarantees) ([#684](https://github.com/KevinMusgrave/pytorch-metric-learning/issues/684)). ## Documentation - The [macOS OpenMP section](../retrieval.md#macos-openmp-runtimes) 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](https://github.com/KevinMusgrave/pytorch-metric-learning/issues/617)). - Recipe pages link to readable source on GitHub for the matching release instead of Python files that browsers download.