# 队列保存的是带历史身份的 key [独立阅读](/course/blocks/moco-key-queue-identity.html)**课堂上下文:从哪个问题来** 指认历史key的身份、加入与离开,先理解缓存到底存了什么,再问它是否仍一致。 沿本页的双样本示意,队列容量为 4,当前保存旧键 `[k1,k2,k3,k4]`。本轮两张图产生两个新键 k5、k6;每个查询先与自己的本轮正键及更新前的旧队列比较。比较完成后,将 k5、k6 按序加入,并移除最旧的 k1、k2;下一批使用的字典于是变为 `[k3,k4,k5,k6]`。这是“容量 4、每批 2 个新键”的教学设置。P17 为便于逐项跟踪,改用每批 1 个新键,得到 `[k2,k3,k4,k5]`;入队和出队遵守相同的先进先出规则。 每个槽保存的是当时算好的向量。k2不会因为查询编码器更新,就自动变成今天重新编码的k2;也没有保存一条可以反传回早先图像的完整计算图。队列的身份标签帮助我们看清“新信息进入、旧信息退出”,向量值则用于相似度计算。 容量更大可以提供更多比较对象,也使最旧条目来自更早的步骤。容量、batch大小和编码器变化速度因此互相影响。课堂图只画4个槽便于指认,不能把4当作MoCo论文的配置。 图内标签与数值:P15 学习表示机制图,状态 2;容量 4 · 本轮新键 k₅、k₆ · FIFO 教学队列;当前图像 → key 编码器;k₅;k₆;入队的是特征;原图只说明来源;k3;k4;k5;k6;最旧;最新;k₅、k₆ 入队;k₁、k₂ 退队;队列中的旧键保持原值;更新编码器不会追溯重算它们。 容量 4:旧队列 [k1,k2,k3,k4];比较后 k5、k6 入队,k1、k2 离开,下一批为 [k3,k4,k5,k6]。旧 key 保留原向量。 查看对应图解状态 - 容量 4 · 本轮新键 k₅、k₆ · FIFO 教学队列 - 当前图像 → key 编码器 - k₅ - k₆ - 入队的是特征 - 原图只说明来源 - k3 - k4 - k5 - k6 - 最旧 - 最新 - k₅、k₆ 入队 - k₁、k₂ 退队 - 队列中的旧键保持原值;更新编码器不会追溯重算它们。容量 4:旧队列 [k1,k2,k3,k4];比较后 k5、k6 入队,k1、k2 离开,下一批为 [k3,k4,k5,k6]。旧 key 保留原向量。 [查看对应图解状态](/#/l3-r2-p15/1)[查看完整图解](/#/l3-r2-p15/1) ## 继续阅读与实验