diag: F 段——MeanFlow 一步采样残留噪声(开环 1/2/4/8 段与零噪声的幅度/抖动/残差-噪声相关;闭环 4 段、零噪声);sample_k 加 steps、rollout 加 steps/z_scale;删 E 段;本机执行清单更新

This commit is contained in:
Hark
2026-10-18 19:10:32 +00:00
parent cafa038110
commit 1bf59e7175
4 changed files with 52 additions and 124 deletions
+7 -3
View File
@@ -151,8 +151,9 @@ class Policy(nn.Module):
x = z - self.decode(m, z, torch.zeros_like(one), one)
return x, v.expand(K), s.expand(K, -1)
def sample_k(self, feat, K, z=None):
"""仿真 / APG 用:每个观测 K 条候选 → act [B,K,16,6], value [B], sub [B,13]"""
def sample_k(self, feat, K, z=None, steps=1):
"""仿真 / APG 用:每个观测 K 条候选 → act [B,K,16,6], value [B], sub [B,13]
steps>1(诊断用,2026-10-19):把 [0,1] 均分成 steps 段,x ← x − (t−r)·u(x, r, t) 逐段走;steps=1 即一步生成。"""
mem = self.encode(feat)
v, s = self.heads(mem)
B = feat.shape[0]
@@ -165,7 +166,10 @@ class Policy(nn.Module):
z = torch.randn(B * K, self.h, 6, device=feat.device, dtype=feat.dtype) if z is None else z.reshape(B * K, self.h, 6)
m = mem.repeat_interleave(K, 0)
one = torch.ones(B * K, device=feat.device, dtype=feat.dtype)
x = z - self.decode(m, z, torch.zeros_like(one), one)
x = z
for i in range(steps):
t, r = 1 - i / steps, 1 - (i + 1) / steps
x = x - (t - r) * self.decode(m, x, one * r, one * t)
return x.view(B, K, self.h, 6), v, s