Update.
[culture.git] / main.py
diff --git a/main.py b/main.py
index b88847e..9d95034 100755 (executable)
--- a/main.py
+++ b/main.py
@@ -79,6 +79,8 @@ parser.add_argument("--dropout", type=float, default=0.1)
 
 parser.add_argument("--deterministic_synthesis", action="store_true", default=False)
 
+parser.add_argument("--reverse_cleanup", action="store_true", default=False)
+
 parser.add_argument("--problem", type=str, default="sky")
 
 parser.add_argument("--nb_gpts", type=int, default=5)
@@ -95,6 +97,16 @@ parser.add_argument("--accuracy_to_make_c_quizzes", type=float, default=0.975)
 
 parser.add_argument("--dirty_debug", action="store_true", default=False)
 
+parser.add_argument("--sky_height", type=int, default=6)
+
+parser.add_argument("--sky_width", type=int, default=8)
+
+parser.add_argument("--sky_nb_birds", type=int, default=3)
+
+parser.add_argument("--sky_nb_iterations", type=int, default=2)
+
+parser.add_argument("--sky_speed", type=int, default=3)
+
 ######################################################################
 
 args = parser.parse_args()
@@ -221,10 +233,16 @@ else:
 assert args.nb_train_samples % args.batch_size == 0
 assert args.nb_test_samples % args.batch_size == 0
 
-if args.problem=="sky":
-    problem=sky.Sky(height=6, width=8, nb_birds=3, nb_iterations=2, speed=2),
-elif args.problem="wireworld":
-    problem=wireworld.Wireworld(height=10, width=15, nb_iterations=4)
+if args.problem == "sky":
+    problem = sky.Sky(
+        height=args.sky_height,
+        width=args.sky_width,
+        nb_birds=args.sky_nb_birds,
+        nb_iterations=args.sky_nb_iterations,
+        speed=args.sky_speed,
+    )
+elif args.problem == "wireworld":
+    problem = wireworld.Wireworld(height=8, width=10, nb_iterations=2, speed=5)
 else:
     raise ValueError
 
@@ -392,6 +410,10 @@ def create_c_quizzes(
 
     nb_to_create = nb_for_train + nb_for_test
 
+    warnings.warn(
+        f"{args.nb_gpts=} {args.nb_models_for_generation=} {args.min_to_validate=} {args.max_to_validate=}"
+    )
+
     while nb_validated() < nb_to_create:
         (
             new_c_quizzes,
@@ -402,6 +424,7 @@ def create_c_quizzes(
             nb_models_for_generation=args.nb_models_for_generation,
             models=models,
             mode=args.generation_mode,
+            reverse_cleanup=args.reverse_cleanup,
             min_ave_seq_logproba=min_ave_seq_logproba,
             n_epoch=n_epoch,
             result_dir=args.result_dir,
@@ -418,9 +441,10 @@ def create_c_quizzes(
         for n in range(nb_correct.max() + 1):
             recorded[n].append(new_c_quizzes[nb_correct == n].clone())
 
-        log_string(
-            f"keep c_quizzes {nb_validated()*100/nb_generated():.02f}% kept total {nb_validated()} / {nb_to_create}"
-        )
+        nv = F.one_hot(nb_correct, num_classes=len(models) + 1).sum(0)
+        nv = " ".join([str(x.item()) for x in nv])
+
+        log_string(f"keep c_quizzes kept {nv} total {nb_validated()} / {nb_to_create}")
 
     # concatenate and shuffle
     for n in recorded.keys():