amer224 commited on
Commit
cc281e1
·
verified ·
1 Parent(s): 3219a42

Add brains/sovereign-v3/data_adapters.py

Browse files
brains/sovereign-v3/data_adapters.py CHANGED
@@ -268,6 +268,8 @@ def build_sequences(lens: Sequence[int], T: int = 8,
268
  @dataclass
269
  class PreppedShard:
270
  rgb: np.ndarray # (N,3,256,256) float32 in [0,1]
 
 
271
  nums: np.ndarray # (N,8)
272
  rtg: np.ndarray # (N,1) z-scored return conditioning
273
  rtg_next: np.ndarray # (N,1)
@@ -349,8 +351,17 @@ class ShardPrepper:
349
  if not keep.any():
350
  return None
351
 
 
 
 
 
 
 
 
 
352
  return PreppedShard(
353
- rgb=rgb_f[keep], nums=nums[keep], rtg=rtg[keep],
 
354
  rtg_next=rtg_next[keep], nums_next=nums_next[keep],
355
  kind=kind[keep], cell=cell[keep], pct=pct[keep], ret=ret[keep],
356
  w=w[keep], win_lab=win_lab[keep], lab64=lab64[keep],
@@ -366,6 +377,8 @@ class StageADataset(Dataset):
366
  def cat(key):
367
  return np.concatenate([getattr(p, key) for p in prepped])
368
  self.rgb = cat("rgb")
 
 
369
  self.nums = cat("nums")
370
  self.rtg = cat("rtg")
371
  self.rtg_next = cat("rtg_next")
@@ -389,7 +402,9 @@ class StageADataset(Dataset):
389
  def __getitem__(self, i: int) -> dict:
390
  t = torch.from_numpy
391
  return dict(
392
- rgb=t(self.rgb[i]), nums=t(self.nums[i]), rtg=t(self.rtg[i]),
 
 
393
  rtg_next=t(self.rtg_next[i]), nums_next=t(self.nums_next[i]),
394
  kind=torch.tensor(self.kind[i]), cell=torch.tensor(self.cell[i]),
395
  pct=torch.tensor(self.pct[i]), ret=torch.tensor(self.ret[i]),
 
268
  @dataclass
269
  class PreppedShard:
270
  rgb: np.ndarray # (N,3,256,256) float32 in [0,1]
271
+ rgb_next: np.ndarray # (N,3,256,256) consecutive frame — dynamics
272
+ reward: np.ndarray # (N,) farmer reward — dynamics reward target
273
  nums: np.ndarray # (N,8)
274
  rtg: np.ndarray # (N,1) z-scored return conditioning
275
  rtg_next: np.ndarray # (N,1)
 
351
  if not keep.any():
352
  return None
353
 
354
+ # consecutive-frame dynamics targets (last frame of each episode
355
+ # repeats itself — no cross-episode leakage)
356
+ rgb_next = rgb_f.copy()
357
+ for e in range(len(lens)):
358
+ s, t = bounds[e], bounds[e + 1]
359
+ if t > s:
360
+ rgb_next[s:t - 1] = rgb_f[s + 1:t]
361
+
362
  return PreppedShard(
363
+ rgb=rgb_f[keep], rgb_next=rgb_next[keep], reward=reward[keep],
364
+ nums=nums[keep], rtg=rtg[keep],
365
  rtg_next=rtg_next[keep], nums_next=nums_next[keep],
366
  kind=kind[keep], cell=cell[keep], pct=pct[keep], ret=ret[keep],
367
  w=w[keep], win_lab=win_lab[keep], lab64=lab64[keep],
 
377
  def cat(key):
378
  return np.concatenate([getattr(p, key) for p in prepped])
379
  self.rgb = cat("rgb")
380
+ self.rgb_next = cat("rgb_next")
381
+ self.reward = cat("reward")
382
  self.nums = cat("nums")
383
  self.rtg = cat("rtg")
384
  self.rtg_next = cat("rtg_next")
 
402
  def __getitem__(self, i: int) -> dict:
403
  t = torch.from_numpy
404
  return dict(
405
+ rgb=t(self.rgb[i]), rgb_next=t(self.rgb_next[i]),
406
+ reward=t(self.reward[i]), nums=t(self.nums[i]),
407
+ rtg=t(self.rtg[i]),
408
  rtg_next=t(self.rtg_next[i]), nums_next=t(self.nums_next[i]),
409
  kind=torch.tensor(self.kind[i]), cell=torch.tensor(self.cell[i]),
410
  pct=torch.tensor(self.pct[i]), ret=torch.tensor(self.ret[i]),