Oups
[picoclvr.git] / main.py
diff --git a/main.py b/main.py
index 2edfa14..9437136 100755 (executable)
--- a/main.py
+++ b/main.py
@@ -33,7 +33,7 @@ parser.add_argument(
     "--task",
     type=str,
     default="twotargets",
-    help="file, byheart, learnop, guessop, mixing, memory, twotargets, addition, picoclvr, mnist, maze, snake, stack, expr, rpl, grid, qmlp, escape",
+    help="file, byheart, learnop, guessop, mixing, memory, twotargets, addition, picoclvr, mnist, maze, snake, stack, expr, rpl, grid, qmlp, greed",
 )
 
 parser.add_argument("--log_filename", type=str, default="train.log", help=" ")
@@ -176,13 +176,17 @@ parser.add_argument("--mixing_hard", action="store_true", default=False)
 parser.add_argument("--mixing_deterministic_start", action="store_true", default=False)
 
 ##############################
-# escape options
+# greed options
 
-parser.add_argument("--escape_height", type=int, default=4)
+parser.add_argument("--greed_height", type=int, default=5)
 
-parser.add_argument("--escape_width", type=int, default=6)
+parser.add_argument("--greed_width", type=int, default=7)
 
-parser.add_argument("--escape_T", type=int, default=25)
+parser.add_argument("--greed_T", type=int, default=25)
+
+parser.add_argument("--greed_nb_walls", type=int, default=5)
+
+parser.add_argument("--greed_nb_coins", type=int, default=2)
 
 ######################################################################
 
@@ -298,7 +302,7 @@ default_task_args = {
         "nb_train_samples": 60000,
         "nb_test_samples": 10000,
     },
-    "escape": {
+    "greed": {
         "model": "37M",
         "batch_size": 25,
         "nb_train_samples": 25000,
@@ -614,14 +618,16 @@ elif args.task == "qmlp":
         device=device,
     )
 
-elif args.task == "escape":
-    task = tasks.Escape(
+elif args.task == "greed":
+    task = tasks.Greed(
         nb_train_samples=args.nb_train_samples,
         nb_test_samples=args.nb_test_samples,
         batch_size=args.batch_size,
-        height=args.escape_height,
-        width=args.escape_width,
-        T=args.escape_T,
+        height=args.greed_height,
+        width=args.greed_width,
+        T=args.greed_T,
+        nb_walls=args.greed_nb_walls,
+        nb_coins=args.greed_nb_coins,
         logger=log_string,
         device=device,
     )
@@ -697,12 +703,10 @@ if args.task == "expr" and args.expr_input_file is not None:
 
 ######################################################################
 
-nb_epochs = args.nb_epochs if args.nb_epochs > 0 else nb_epochs_default
-
 # Compute the entropy of the training tokens
 
 token_count = 0
-for input in task.batches(split="train"):
+for input in task.batches(split="train", desc="train-entropy"):
     token_count += F.one_hot(input, num_classes=task.vocabulary_size()).sum((0, 1))
 token_probas = token_count / token_count.sum()
 entropy = -torch.xlogy(token_probas, token_probas).sum()
@@ -724,9 +728,13 @@ if args.max_percents_of_test_in_train >= 0:
         yield s
 
     nb_test, nb_in_train = 0, 0
-    for test_subset in subsets_as_tuples(task.batches(split="test"), 25000):
+    for test_subset in subsets_as_tuples(
+        task.batches(split="test", desc="test-check"), 25000
+    ):
         in_train = set()
-        for train_subset in subsets_as_tuples(task.batches(split="train"), 25000):
+        for train_subset in subsets_as_tuples(
+            task.batches(split="train", desc="train-check"), 25000
+        ):
             in_train.update(test_subset.intersection(train_subset))
         nb_in_train += len(in_train)
         nb_test += len(test_subset)
@@ -767,7 +775,7 @@ log_string(f"learning_rate_schedule {learning_rate_schedule}")
 
 nb_samples_seen = 0
 
-if nb_epochs_finished >= nb_epochs:
+if nb_epochs_finished >= args.nb_epochs:
     task.produce_results(
         n_epoch=nb_epochs_finished,
         model=model,
@@ -778,7 +786,7 @@ if nb_epochs_finished >= nb_epochs:
 
 time_pred_result = None
 
-for n_epoch in range(nb_epochs_finished, nb_epochs):
+for n_epoch in range(nb_epochs_finished, args.nb_epochs):
     learning_rate = learning_rate_schedule[n_epoch]
 
     log_string(f"learning_rate {learning_rate}")