{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/facd5784eb654f089d7c523bab835dce.html","relationshipResolution":"Resolve relative relationship URLs against relationshipURLBase; complete records and absolute URLs are in blocks.","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/facd5784eb654f089d7c523bab835dce.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/facd5784eb654f089d7c523bab835dce.md","pages":[{"id":"reading-opening","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","unit":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","unitId":"notebook-blocks/facd5784eb654f089d7c523bab835dce","chapter":"course","number":1}],"aliases":[{"oldId":"b-5fd8b4a95f5da9c792de63f3","targetId":"b-5fd8b4a95f5da9c792de63f3","page":"reading-opening","operation":"move","beforeSHA256":"b097cc692a4f43c3eeba08ce9c2e73c631f1bad298a5fb1dec9efa967315dac3","afterSHA256":"b097cc692a4f43c3eeba08ce9c2e73c631f1bad298a5fb1dec9efa967315dac3","reason":"Same source body in authored semantic page"},{"oldId":"b-78084b26ec1a9404351f1830","targetId":"b-78084b26ec1a9404351f1830","page":"reading-opening","operation":"move","beforeSHA256":"658678c9cd39c69799c9e8fb9461ea091eda8ae548d560f36ecc72cdc4041c5e","afterSHA256":"658678c9cd39c69799c9e8fb9461ea091eda8ae548d560f36ecc72cdc4041c5e","reason":"Same source body in authored semantic page"},{"oldId":"b-5ca2363786b3efceafb893e3","targetId":"b-5ca2363786b3efceafb893e3","page":"reading-opening","operation":"move","beforeSHA256":"42cba31deccba2a350b9b23bd0ca1dcaa4c4c5cb9d35c773e1fcb89124788ccd","afterSHA256":"42cba31deccba2a350b9b23bd0ca1dcaa4c4c5cb9d35c773e1fcb89124788ccd","reason":"Same source body in authored semantic page"},{"oldId":"b-babbb18700933612db7e0bbd","targetId":"b-babbb18700933612db7e0bbd","page":"reading-opening","operation":"move","beforeSHA256":"90e8ba62b9af4bedd5be3a2559568519f4df7a42b13048f81039496efd45dea2","afterSHA256":"90e8ba62b9af4bedd5be3a2559568519f4df7a42b13048f81039496efd45dea2","reason":"Same source body in authored semantic page"},{"oldId":"b-6c76cba19a30f27513d33beb","targetId":"b-6c76cba19a30f27513d33beb","page":"reading-opening","operation":"move","beforeSHA256":"3d32c29794a1b985da1ce28a5c69a139c3d4040422600609c15a1f81f9536114","afterSHA256":"3d32c29794a1b985da1ce28a5c69a139c3d4040422600609c15a1f81f9536114","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-5fd8b4a95f5da9c792de63f3","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/facd5784eb654f089d7c523bab835dce.html#b-5fd8b4a95f5da9c792de63f3","content":"[LAB 04 · CLIP：候选、提示与关系检验](/course/notebooks/0ba963931ddf4866b507b210d93a43bf.html)","sha256":"b097cc692a4f43c3eeba08ce9c2e73c631f1bad298a5fb1dec9efa967315dac3","chapter":{"id":"course","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码"},"unit":{"id":"notebook-blocks/facd5784eb654f089d7c523bab835dce","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码"},"page":{"id":"reading-opening","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","number":1},"sectionTitle":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","currentQuestion":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-78084b26ec1a9404351f1830","prerequisites":[],"relatedBlocks":[]},{"id":"b-78084b26ec1a9404351f1830","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/facd5784eb654f089d7c523bab835dce.html#b-78084b26ec1a9404351f1830","content":"# 5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","sha256":"658678c9cd39c69799c9e8fb9461ea091eda8ae548d560f36ecc72cdc4041c5e","chapter":{"id":"course","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码"},"unit":{"id":"notebook-blocks/facd5784eb654f089d7c523bab835dce","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码"},"page":{"id":"reading-opening","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","number":1},"sectionTitle":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","currentQuestion":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-5fd8b4a95f5da9c792de63f3","nextBlock":"b-5ca2363786b3efceafb893e3","prerequisites":[{"id":"b-5fd8b4a95f5da9c792de63f3","url":"#b-5fd8b4a95f5da9c792de63f3","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-5ca2363786b3efceafb893e3","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/facd5784eb654f089d7c523bab835dce.html#b-5ca2363786b3efceafb893e3","content":"主线阅读与优先实验","sha256":"42cba31deccba2a350b9b23bd0ca1dcaa4c4c5cb9d35c773e1fcb89124788ccd","chapter":{"id":"course","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码"},"unit":{"id":"notebook-blocks/facd5784eb654f089d7c523bab835dce","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码"},"page":{"id":"reading-opening","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","number":1},"sectionTitle":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","currentQuestion":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-78084b26ec1a9404351f1830","nextBlock":"b-babbb18700933612db7e0bbd","prerequisites":[{"id":"b-78084b26ec1a9404351f1830","url":"#b-78084b26ec1a9404351f1830","role":"section-title"},{"id":"b-5fd8b4a95f5da9c792de63f3","url":"#b-5fd8b4a95f5da9c792de63f3","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-babbb18700933612db7e0bbd","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/facd5784eb654f089d7c523bab835dce.html#b-babbb18700933612db7e0bbd","content":"真实CLIP输入/权重/分数、候选改动、四条件规则与独立关系推理","sha256":"90e8ba62b9af4bedd5be3a2559568519f4df7a42b13048f81039496efd45dea2","chapter":{"id":"course","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码"},"unit":{"id":"notebook-blocks/facd5784eb654f089d7c523bab835dce","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码"},"page":{"id":"reading-opening","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","number":1},"sectionTitle":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","currentQuestion":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-5ca2363786b3efceafb893e3","nextBlock":"b-6c76cba19a30f27513d33beb","prerequisites":[{"id":"b-78084b26ec1a9404351f1830","url":"#b-78084b26ec1a9404351f1830","role":"section-title"},{"id":"b-5fd8b4a95f5da9c792de63f3","url":"#b-5fd8b4a95f5da9c792de63f3","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-6c76cba19a30f27513d33beb","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/facd5784eb654f089d7c523bab835dce.html#b-6c76cba19a30f27513d33beb","content":"```\n# 独立材料，不依赖另一册 notebook 的内存；重复运行复用本项目已下载内容。\nfrom pathlib import Path\nimport io, json, zipfile, requests, sys, hashlib\n_candidates=[Path.cwd()/'lecture03-clip-retrieval', Path.cwd()]\nRETRIEVAL_ROOT=next((p for p in _candidates if (p/'cache/clip-features.npz').exists()),None)\nif RETRIEVAL_ROOT is None:\n    _response=requests.get('https://codingai-lec03.pages.dev/course/materials/lecture03-clip-retrieval.zip',timeout=60)\n    _response.raise_for_status()\n    _data=_response.content\n    print('下载材料 ZIP:',len(_data),'bytes; SHA256',hashlib.sha256(_data).hexdigest())\n    with zipfile.ZipFile(io.BytesIO(_data)) as z:\n        for info in z.infolist():\n            target=(Path.cwd()/info.filename).resolve()\n            assert target.is_relative_to(Path.cwd().resolve()), '拒绝越界路径'\n            if info.is_dir():target.mkdir(parents=True,exist_ok=True)\n            elif not target.exists():\n                target.parent.mkdir(parents=True,exist_ok=True);target.write_bytes(z.read(info))\n    RETRIEVAL_ROOT=Path.cwd()/'lecture03-clip-retrieval'\nassert (RETRIEVAL_ROOT/'cache/provenance.json').is_file()\nsys.path.insert(0,str(RETRIEVAL_ROOT))\nimport run_clip_retrieval as cr\nimport numpy as np\np=json.loads((RETRIEVAL_ROOT/'cache/provenance.json').read_text())\nassert cr.sha(RETRIEVAL_ROOT/'cache/clip-features.npz')==p['cache_sha256']\nassert cr.sha(RETRIEVAL_ROOT/'assets/manifest.json')==p['manifest_sha256']\nmanifest=json.loads((RETRIEVAL_ROOT/'assets/manifest.json').read_text())\nfor r in manifest['gallery']+manifest['relation']+manifest['holder']:\n    assert cr.sha(RETRIEVAL_ROOT/r['path'])==r['sha256']\na=np.load(RETRIEVAL_ROOT/'cache/clip-features.npz')\nprint('已核验真实 CLIP 缓存；生成时间',p['generated_at_utc'])\nprint('本格只载入缓存，没有在当前 notebook 运行 CLIP 编码器。')\nprint('gallery, queries:',a['gallery'].shape,a['queries'].shape)\n\n```","sha256":"3d32c29794a1b985da1ce28a5c69a139c3d4040422600609c15a1f81f9536114","chapter":{"id":"course","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码"},"unit":{"id":"notebook-blocks/facd5784eb654f089d7c523bab835dce","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码"},"page":{"id":"reading-opening","title":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","number":1},"sectionTitle":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","currentQuestion":"5 · 2026-09-22 保存实测：固定权重复核与关系分数 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-babbb18700933612db7e0bbd","nextBlock":null,"prerequisites":[{"id":"b-78084b26ec1a9404351f1830","url":"#b-78084b26ec1a9404351f1830","role":"section-title"},{"id":"b-5fd8b4a95f5da9c792de63f3","url":"#b-5fd8b4a95f5da9c792de63f3","role":"problem-context"}],"relatedBlocks":[]}]}
