kdirgul commited on
Commit
a2cb671
·
verified ·
1 Parent(s): ba7a119

faz9_recur: gen_khop ZINCIR gorevi (perm dongu-kisayolu kaldirildi; gercek k-hop)

Browse files
Files changed (1) hide show
  1. code/kod/faz9_recur.py +12 -12
code/kod/faz9_recur.py CHANGED
@@ -137,21 +137,21 @@ def smoke():
137
 
138
  # ───────────── FAZ B: derinlik-gerektiren görev + fixed-vs-recurrent (GO/NO-GO) ─────────────
139
  def gen_khop(batch, n_keys, k, device="cpu"):
140
- """k-hop pointer-chase (derinlik-ayrıştırıcı). Her örnek: rastgele f:[n]→[n] permütasyon,
141
- çiftleri [i, f(i)] KARIŞIK sırada → SEP → start. Hedef = f^k(start) (k sıralı hop gerek).
142
- Vocab 0..n_keys-1 + SEP(n_keys). Loss SADECE son pozisyon. Tek-pass tarama çözemezderinlik/recursion gerek."""
 
 
143
  SEP = n_keys; seqs = []; tgts = []
144
  for _ in range(batch):
145
- perm = torch.randperm(n_keys)
 
146
  toks = []
147
- for i in torch.randperm(n_keys).tolist():
148
- toks += [i, int(perm[i])]
149
- start = int(torch.randint(0, n_keys, (1,)))
150
- toks += [SEP, start]
151
- cur = start
152
- for _ in range(k):
153
- cur = int(perm[cur])
154
- seqs.append(toks); tgts.append(cur)
155
  return (torch.tensor(seqs, device=device), torch.tensor(tgts, device=device))
156
 
157
 
 
137
 
138
  # ───────────── FAZ B: derinlik-gerektiren görev + fixed-vs-recurrent (GO/NO-GO) ─────────────
139
  def gen_khop(batch, n_keys, k, device="cpu"):
140
+ """k-hop ZİNCİR traversali (döngü-kısayolu YOK). Düğümler tek bir zincir (chain=randperm),
141
+ kenarlar [chain[i], chain[i+1]] KARIŞIK sırada → SEP → start=chain[p]. Hedef=chain[p+k], p∈[0,n-k).
142
+ Zincir döngüsüz hedef≠start her zaman 'başlangıcı kopyala' kısayolu yokgerçek k sıralı hop gerek.
143
+ Vocab 0..n_keys-1 + SEP(n_keys). Loss SADECE son pozisyon. (Eski permütasyon görevi σ^k(s)=s döngü-kısayoluyla kirleniyordu.)"""
144
+ assert n_keys > k, "n_keys > k olmalı"
145
  SEP = n_keys; seqs = []; tgts = []
146
  for _ in range(batch):
147
+ chain = torch.randperm(n_keys)
148
+ edges = [[int(chain[i]), int(chain[i + 1])] for i in range(n_keys - 1)]
149
  toks = []
150
+ for j in torch.randperm(len(edges)).tolist():
151
+ toks += edges[j]
152
+ p = int(torch.randint(0, n_keys - k, (1,)))
153
+ toks += [SEP, int(chain[p])]
154
+ seqs.append(toks); tgts.append(int(chain[p + k]))
 
 
 
155
  return (torch.tensor(seqs, device=device), torch.tensor(tgts, device=device))
156
 
157