"Routes embedding-network, contrastive-loss, triplet-loss, and
Scanned 9/9/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill embedding-losses-mining --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Embedding Losses Mining?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-embedding-losses-mining)More formats (shields.io, HTML) on the badges page.
---
name: embedding-losses-mining
description: "Routes embedding-network, contrastive-loss, triplet-loss, and
online mining tasks for the Siamese-triplet repository."
metadata:
disco-role: operating
disable-model-invocation: true
license: BSD 3-Clause
---
# Embedding, Losses, and Mining
Use this sub-skill when the task is about the repository's embedding backbone, the siamese and triplet wrappers, the contrastive or triplet losses, or the pair/triplet selection helpers used for online mining.
## Covered surface
- `EmbeddingNet`
- `EmbeddingNetL2`
- `ClassificationNet`
- `SiameseNet`
- `TripletNet`
- `ContrastiveLoss`
- `TripletLoss`
- `OnlineContrastiveLoss`
- `OnlineTripletLoss`
- `PairSelector` and `TripletSelector` implementations
## When to route here
Read this sub-skill for tasks that mention:
- image embeddings
- Siamese or triplet networks
- contrastive or triplet margin losses
- hard negative mining
- pair or triplet selectors
- online contrastive or online triplet learning
- 2D embedding backbones and post-backbone classification heads
## What to do first
1. Read `references/api-reference.md` for shapes and return values.
2. Read `references/troubleshooting.md` if a selector or loss returns empty results.
3. Run `scripts/check_losses_networks.py` for a tiny no-download smoke.
## Evidence signals
- Source evidence comes from `networks.py`, `losses.py`, `utils.py`, README loss descriptions, and the notebook training cells.
- The surface is pure PyTorch; CPU verification covers the selected behavior, while CUDA is an optional acceleration path.
- The smoke script checks object construction, tensor shapes, selector outputs, and online-loss return contracts.
## Short workflow
- Instantiate `EmbeddingNet` and verify that it maps `1×28×28` images to a 2D embedding.
- Wrap the backbone with `ClassificationNet`, `SiameseNet`, or `TripletNet` depending on the downstream loss.
- Choose the loss:
- `ContrastiveLoss` for pairwise same/different supervision
- `TripletLoss` for explicit anchor/positive/negative supervision
- `OnlineContrastiveLoss` or `OnlineTripletLoss` when mining pairs or triplets inside a mini-batch
- For online mining, pair the loss with a selector that matches the batch structure and label density.
## Decision points
- Use `EmbeddingNetL2` if normalized embeddings are important.
- Use `ClassificationNet` only when the task is ordinary classification rather than metric learning.
- Use `HardNegativePairSelector` when you want the hardest negative pairs from a batch.
- Use one of the triplet selector factories when you want exhaustive, random hard, or semi-hard negative mining.
- Keep the margin the same between the loss and the selector strategy unless the reference explicitly says otherwise.
## Common failure modes
- The selector sees too few examples per class and cannot mine meaningful pairs or triplets.
- The code assumes CPU-friendly selector logic, so large batches can become expensive even when the backbone is on GPU.
- `OnlineTripletLoss` returns `(loss, num_triplets)`, which is easy to misuse if a caller expects a plain tensor.
- `EmbeddingNetL2` divides by the norm without an epsilon guard.
## Acceptance checks
- Network wrappers produce outputs with the expected arity.
- Direct losses return scalar tensors.
- Online contrastive loss returns a scalar tensor.
- Online triplet loss returns a scalar tensor plus a mined-triplet count.
- Selector fixtures contain at least two samples per class.
## Read next
- `references/api-reference.md` for the module and selector map.
- `references/troubleshooting.md` for CPU/GPU and empty-mining issues.
- `../dataset-sampling/SKILL.md` if the next step is a wrapper or sampler problem.
- `../training-experiments/SKILL.md` if the next step is a fit-loop or notebook workflow check.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!