{"record":{"id":"d08a6e62c730cfaa","repo":"rohitg00/ai-engineering-from-scratch","slug":"shape-mismatch-image-tuple-image-emb-shape-vs-t-d08a6e","errorCode":null,"errorMessage":"shape mismatch image {tuple(image_emb.shape)} vs text {tuple(text_emb.shape)}","messagePattern":"shape mismatch image (.+?) vs text (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"phases/19-capstone-projects/62-vision-language-pretraining/code/main.py","lineNumber":82,"sourceCode":"    n_pairs: int = 200\n    batch_size: int = 16\n    steps: int = 50\n    lr: float = 5e-4\n    lm_weight: float = 1.0\n    init_log_tau: float = math.log(1.0 / 0.07)\n    seed: int = 0\n\n\ndef info_nce_loss(image_emb: torch.Tensor, text_emb: torch.Tensor,\n                  log_tau: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:\n    \"\"\"Bidirectional InfoNCE used in CLIP and friends.\n\n    Returns (loss, similarity_matrix). image_emb and text_emb must have the\n    same shape (N, D). The similarity matrix is symmetric in semantics but not\n    in values (rows are images, columns are texts).\n    \"\"\"\n    if image_emb.shape != text_emb.shape:\n        raise ValueError(\n            f\"shape mismatch image {tuple(image_emb.shape)} vs text {tuple(text_emb.shape)}\"\n        )\n    n = image_emb.shape[0]\n    img_n = F.normalize(image_emb, dim=-1)\n    txt_n = F.normalize(text_emb, dim=-1)\n\n    scale = log_tau.exp().clamp(min=1e-3, max=100.0)\n    sim = (img_n @ txt_n.T) * scale\n\n    targets = torch.arange(n, device=sim.device)\n    loss_i2t = F.cross_entropy(sim, targets)\n    loss_t2i = F.cross_entropy(sim.T, targets)\n    return (loss_i2t + loss_t2i) * 0.5, sim\n\n\ndef lm_loss(logits: torch.Tensor, target_ids: torch.Tensor,\n            padding_id: int = PAD_ID) -> torch.Tensor:\n    \"\"\"Next-token cross-entropy with padding masked.","sourceCodeStart":64,"sourceCodeEnd":100,"githubUrl":"https://github.com/rohitg00/ai-engineering-from-scratch/blob/39ea8a1c6d0b61f071226eff7ede4d4105fed820/phases/19-capstone-projects/62-vision-language-pretraining/code/main.py#L64-L100","documentation":"Error \"shape mismatch image {tuple(image_emb.shape)} vs text {tuple(text_emb.shape)}\" thrown in rohitg00/ai-engineering-from-scratch.","triggerScenarios":"Thrown at phases/19-capstone-projects/62-vision-language-pretraining/code/main.py:82 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"39ea8a1c6d0b61f071226eff7ede4d4105fed820","analyzedAt":"2026-08-26T03:13:46.626Z","schemaVersion":2},"datasetVersion":"2026-08-26T07:17:17.940Z"}