diag: F 段——MeanFlow 一步采样残留噪声(开环 1/2/4/8 段与零噪声的幅度/抖动/残差-噪声相关;闭环 4 段、零噪声);sample_k 加 steps、rollout 加 steps/z_scale;删 E 段;本机执行清单更新
This commit is contained in:
+7
-3
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user