Lecture 03 学习讲义
正文
工具
按问题查找
Lecture 035 · 查询依赖的交互:一个可运行的区域加权对照 · 实现代码

5 · 查询依赖的交互:一个可运行的区域加权对照 · 实现代码

独立阅读

并入相关学习路径

同一CLIP缓存、exact/IVF搜索、延迟/扫描量、区域交互基线

展开完整实现代码
R=a['relation_regions'][:,1:]  # 两图 × 两区域 × 512,丢弃full区域
# 同一图片换查询,观察权重确实变化。
atomic=R[0]@Q[[0,2]].T
weights=np.exp((atomic-atomic.max(0,keepdims=True))/.05)
weights/=weights.sum(0,keepdims=True)
print('cat / astronaut 查询的 [左区,右区] 权重:',weights.T)
# 同样两个对象交换左右;无坐标的对称聚合不可能分辨顺序。
local=np.einsum('ijd,kd->ikj',R,a['relation_text'])
w=np.exp((local-local.max(-1,keepdims=True))/.05);w/=w.sum(-1,keepdims=True)
score=(w*local).sum(-1)
print('两张交换图 × 两条关系句:',score)
assert np.allclose(score[0],score[1],atol=1e-6)