[LAB 07 · MoCo:历史 key、队列与两种更新](/course/notebooks/0d1b8f6fbf6a476c93ffcc169f2ec1f4.html) # 从概率到字典更新 · 实现代码 [独立阅读](/course/notebook-blocks/602b61f9e3954f0e93f1f4bed38e4bd4.html) 按问题继续 真实FIFO键、EMA、梯度更新及低于随机基线的保留结果 展开完整实现代码 ``` import os, tempfile LAB_WORKDIR = tempfile.mkdtemp(prefix='lecture03-') os.chdir(LAB_WORKDIR) print('Ephemeral experiment workspace ready') import numpy as np q=np.array([1.,0.]); keys=np.array([[.8,.2],[0.,1.],[-1.,0.]]) keys=keys/np.linalg.norm(keys,axis=1,keepdims=True) for T in [.1,.5]: s=keys@q/T; p=np.exp(s-s.max()); p/=p.sum(); print('T',T,'p',p.round(4)) queue=['a','b','c','d']; queue=(queue+['e','f'])[-4:] tk=np.array([0.,2.]); tq=np.array([2.,4.]); print('queue',queue,'EMA',(0.9*tk+0.1*tq)) ```