Update.
[picoclvr.git] / tasks.py
index 0fac0a7..0827a44 100755 (executable)
--- a/tasks.py
+++ b/tasks.py
@@ -34,7 +34,7 @@ def masked_inplace_autoregression(
             batches,
             dynamic_ncols=True,
             desc=progress_bar_desc,
-            # total=input.size(0) // batch_size,
+            total=(input.size(0) + batch_size - 1) // batch_size,
         )
 
     with torch.autograd.no_grad():
@@ -1070,6 +1070,7 @@ class RPL(Task):
         train_sequences = [
             rpl.generate(
                 nb_starting_values=nb_starting_values,
+                nb_result_values_max=4 * nb_starting_values,
                 max_input=max_input,
                 prog_len=prog_len,
                 nb_runs=nb_runs,
@@ -1080,6 +1081,7 @@ class RPL(Task):
         test_sequences = [
             rpl.generate(
                 nb_starting_values=nb_starting_values,
+                nb_result_values_max=4 * nb_starting_values,
                 max_input=max_input,
                 prog_len=prog_len,
                 nb_runs=nb_runs,
@@ -1179,9 +1181,9 @@ class RPL(Task):
         # --------------------------------------------------------------------
         def compute_nb_errors_output(input, nb_to_log=0):
             result = input.clone()
-            k = torch.arange(result.size(1), device=result.device)[None,:]
-            last_output_idx = ((result == self.t_output) * k).max(dim=1,keep_dim=True)
-            first_prog_idx = ((result == self.t_prog) * k).min(dim=1,keep_dim=True)
+            k = torch.arange(result.size(1), device=result.device)[None, :]
+            last_output_idx = ((result == self.t_output) * k).max(dim=1, keep_dim=True)
+            first_prog_idx = ((result == self.t_prog) * k).min(dim=1, keep_dim=True)
             ar_mask = (k > last_output_idx).long() * (k < first_prog_idx)
             result = (1 - ar_mask) * result + ar_mask * self.t_nul
 
@@ -1198,7 +1200,7 @@ class RPL(Task):
             for x, y in zip(input, result):
                 seq = [self.id2token[i.item()] for i in y]
                 sum_nb_total += 1
-                sum_nb_errors += 0 if (x-y).abs().max() == 0 else 1
+                sum_nb_errors += 0 if (x - y).abs().max() == 0 else 1
                 if nb_to_log > 0:
                     gt_seq = [self.id2token[i.item()] for i in x]
                     _, _, gt_prog, _ = rpl.compute_nb_errors(gt_seq)