{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/06052931c0434d36aae2251b7873e30c.html","relationshipResolution":"Resolve relative relationship URLs against relationshipURLBase; complete records and absolute URLs are in blocks.","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/06052931c0434d36aae2251b7873e30c.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/06052931c0434d36aae2251b7873e30c.md","pages":[{"id":"reading-opening","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","unit":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","unitId":"notebook-blocks/06052931c0434d36aae2251b7873e30c","chapter":"course","number":1}],"aliases":[{"oldId":"b-d773900e3717510bc22d1c45","targetId":"b-d773900e3717510bc22d1c45","page":"reading-opening","operation":"move","beforeSHA256":"1a4de4df51c1a8787dc96ec401888dfe89d250842519319b9af7a931ca765eee","afterSHA256":"1a4de4df51c1a8787dc96ec401888dfe89d250842519319b9af7a931ca765eee","reason":"Same source body in authored semantic page"},{"oldId":"b-e779f04a098945062e026f15","targetId":"b-e779f04a098945062e026f15","page":"reading-opening","operation":"move","beforeSHA256":"a2831706afdcab244fcc15dad838792c734a2b878accc2d56a5dad73d2e404ed","afterSHA256":"a2831706afdcab244fcc15dad838792c734a2b878accc2d56a5dad73d2e404ed","reason":"Same source body in authored semantic page"},{"oldId":"b-876874a6fd6a1cd20b53ca9d","targetId":"b-876874a6fd6a1cd20b53ca9d","page":"reading-opening","operation":"move","beforeSHA256":"dc06c1e728a4b5740ba634b145bc9a1da6323031626734cb4555db5a744df806","afterSHA256":"dc06c1e728a4b5740ba634b145bc9a1da6323031626734cb4555db5a744df806","reason":"Same source body in authored semantic page"},{"oldId":"b-083e303d097201207363b1fd","targetId":"b-083e303d097201207363b1fd","page":"reading-opening","operation":"move","beforeSHA256":"8021c18afc52ba7b6612f43ecfb0fdd4789efe91cc9cd656984357d81a8514de","afterSHA256":"8021c18afc52ba7b6612f43ecfb0fdd4789efe91cc9cd656984357d81a8514de","reason":"Same source body in authored semantic page"},{"oldId":"b-4a59297954a6661420a21236","targetId":"b-4a59297954a6661420a21236","page":"reading-opening","operation":"move","beforeSHA256":"1c94690e55052c3ecda347fd63eda585c74c30839c4f2ee4f7e60c12cef100b7","afterSHA256":"1c94690e55052c3ecda347fd63eda585c74c30839c4f2ee4f7e60c12cef100b7","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-d773900e3717510bc22d1c45","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/06052931c0434d36aae2251b7873e30c.html#b-d773900e3717510bc22d1c45","content":"[LAB 12 · CLIP延伸：缓存与检索（近似索引选读）](/course/notebooks/921eeaf784284ce19568c6ca7619b55a.html)","sha256":"1a4de4df51c1a8787dc96ec401888dfe89d250842519319b9af7a931ca765eee","chapter":{"id":"course","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码"},"unit":{"id":"notebook-blocks/06052931c0434d36aae2251b7873e30c","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码"},"page":{"id":"reading-opening","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","number":1},"sectionTitle":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","currentQuestion":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-e779f04a098945062e026f15","prerequisites":[],"relatedBlocks":[]},{"id":"b-e779f04a098945062e026f15","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/06052931c0434d36aae2251b7873e30c.html#b-e779f04a098945062e026f15","content":"# 5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","sha256":"a2831706afdcab244fcc15dad838792c734a2b878accc2d56a5dad73d2e404ed","chapter":{"id":"course","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码"},"unit":{"id":"notebook-blocks/06052931c0434d36aae2251b7873e30c","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码"},"page":{"id":"reading-opening","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","number":1},"sectionTitle":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","currentQuestion":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-d773900e3717510bc22d1c45","nextBlock":"b-876874a6fd6a1cd20b53ca9d","prerequisites":[{"id":"b-d773900e3717510bc22d1c45","url":"#b-d773900e3717510bc22d1c45","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-876874a6fd6a1cd20b53ca9d","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/06052931c0434d36aae2251b7873e30c.html#b-876874a6fd6a1cd20b53ca9d","content":"并入相关学习路径","sha256":"dc06c1e728a4b5740ba634b145bc9a1da6323031626734cb4555db5a744df806","chapter":{"id":"course","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码"},"unit":{"id":"notebook-blocks/06052931c0434d36aae2251b7873e30c","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码"},"page":{"id":"reading-opening","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","number":1},"sectionTitle":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","currentQuestion":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-e779f04a098945062e026f15","nextBlock":"b-083e303d097201207363b1fd","prerequisites":[{"id":"b-e779f04a098945062e026f15","url":"#b-e779f04a098945062e026f15","role":"section-title"},{"id":"b-d773900e3717510bc22d1c45","url":"#b-d773900e3717510bc22d1c45","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-083e303d097201207363b1fd","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/06052931c0434d36aae2251b7873e30c.html#b-083e303d097201207363b1fd","content":"同一CLIP缓存、exact/IVF搜索、延迟/扫描量、区域交互基线","sha256":"8021c18afc52ba7b6612f43ecfb0fdd4789efe91cc9cd656984357d81a8514de","chapter":{"id":"course","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码"},"unit":{"id":"notebook-blocks/06052931c0434d36aae2251b7873e30c","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码"},"page":{"id":"reading-opening","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","number":1},"sectionTitle":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","currentQuestion":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-876874a6fd6a1cd20b53ca9d","nextBlock":"b-4a59297954a6661420a21236","prerequisites":[{"id":"b-e779f04a098945062e026f15","url":"#b-e779f04a098945062e026f15","role":"section-title"},{"id":"b-d773900e3717510bc22d1c45","url":"#b-d773900e3717510bc22d1c45","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-4a59297954a6661420a21236","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/06052931c0434d36aae2251b7873e30c.html#b-4a59297954a6661420a21236","content":"```\nR=a['relation_regions'][:,1:]  # 两图 × 两区域 × 512，丢弃full区域\n# 同一图片换查询，观察权重确实变化。\natomic=R[0]@Q[[0,2]].T\nweights=np.exp((atomic-atomic.max(0,keepdims=True))/.05)\nweights/=weights.sum(0,keepdims=True)\nprint('cat / astronaut 查询的 [左区,右区] 权重：',weights.T)\n# 同样两个对象交换左右；无坐标的对称聚合不可能分辨顺序。\nlocal=np.einsum('ijd,kd->ikj',R,a['relation_text'])\nw=np.exp((local-local.max(-1,keepdims=True))/.05);w/=w.sum(-1,keepdims=True)\nscore=(w*local).sum(-1)\nprint('两张交换图 × 两条关系句：',score)\nassert np.allclose(score[0],score[1],atol=1e-6)\n\n```","sha256":"1c94690e55052c3ecda347fd63eda585c74c30839c4f2ee4f7e60c12cef100b7","chapter":{"id":"course","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码"},"unit":{"id":"notebook-blocks/06052931c0434d36aae2251b7873e30c","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码"},"page":{"id":"reading-opening","title":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","number":1},"sectionTitle":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","currentQuestion":"5 · 查询依赖的交互：一个可运行的区域加权对照 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-083e303d097201207363b1fd","nextBlock":null,"prerequisites":[{"id":"b-e779f04a098945062e026f15","url":"#b-e779f04a098945062e026f15","role":"section-title"},{"id":"b-d773900e3717510bc22d1c45","url":"#b-d773900e3717510bc22d1c45","role":"problem-context"}],"relatedBlocks":[]}]}
