X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;ds=inline;f=main.py;h=97c71301fb8062cff3e66afb0bb00e4a815cce49;hb=61c98647a2d708c8f2c5f0d25bcf05df92e1233f;hp=6c2759961155245694d28983825f9dee85246075;hpb=70d2428cd6e4caaf5c81c6cb77961866405a4cd5;p=culture.git diff --git a/main.py b/main.py index 6c27599..97c7130 100755 --- a/main.py +++ b/main.py @@ -29,12 +29,7 @@ parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) -parser.add_argument( - "--task", - type=str, - default="world", - help="file, byheart, learnop, guessop, mixing, memory, twotargets, addition, picoclvr, mnist, maze, snake, stack, expr, rpl, grid, qmlp, greed", -) +parser.add_argument("--task", type=str, default="world", help="world") parser.add_argument("--log_filename", type=str, default="train.log", help=" ") @@ -78,119 +73,10 @@ parser.add_argument("--dropout", type=float, default=0.1) parser.add_argument("--deterministic_synthesis", action="store_true", default=False) -############################## -# filetask - -parser.add_argument("--filetask_train_file", type=str, default=None) - -parser.add_argument("--filetask_test_file", type=str, default=None) - -############################## -# rpl options - -parser.add_argument("--rpl_nb_starting_values", type=int, default=3) - -parser.add_argument("--rpl_max_input", type=int, default=9) - -parser.add_argument("--rpl_prog_len", type=int, default=8) - -parser.add_argument("--rpl_nb_runs", type=int, default=5) - -parser.add_argument("--rpl_no_prog", action="store_true", default=False) - -############################## -# grid options - -parser.add_argument("--grid_size", type=int, default=6) - -parser.add_argument("--grid_fraction_play", type=float, default=0) - -############################## -# picoclvr options - -parser.add_argument("--picoclvr_nb_colors", type=int, default=5) - -parser.add_argument("--picoclvr_height", type=int, default=12) - -parser.add_argument("--picoclvr_width", type=int, default=16) - -parser.add_argument("--picocvlr_prune_properties", type=str, default="none") - -############################## -# Maze options - -parser.add_argument("--maze_height", type=int, default=13) - -parser.add_argument("--maze_width", type=int, default=21) - -parser.add_argument("--maze_nb_walls", type=int, default=15) - -############################## -# Snake options - -parser.add_argument("--snake_height", type=int, default=9) - -parser.add_argument("--snake_width", type=int, default=12) - -parser.add_argument("--snake_nb_colors", type=int, default=5) - -parser.add_argument("--snake_length", type=int, default=200) - -############################## -# ByHeart options - -parser.add_argument("--byheart_separation", type=int, default=1) - -############################## -# Stack options - -parser.add_argument("--stack_nb_steps", type=int, default=100) - -parser.add_argument("--stack_nb_stacks", type=int, default=3) - -parser.add_argument("--stack_nb_digits", type=int, default=3) - -parser.add_argument("--stack_fraction_values_for_train", type=float, default=None) - -############################## -# Expr options - -parser.add_argument("--expr_nb_variables", type=int, default=5) - -parser.add_argument("--expr_sequence_length", type=int, default=40) - -parser.add_argument("--expr_operand_max", type=int, default=9) - -parser.add_argument("--expr_result_max", type=int, default=99) - -parser.add_argument("--expr_input_file", type=str, default=None) - -############################## -# Mixing - -parser.add_argument("--mixing_hard", action="store_true", default=False) - -parser.add_argument("--mixing_deterministic_start", action="store_true", default=False) - -############################## -# greed options - -parser.add_argument("--greed_height", type=int, default=5) - -parser.add_argument("--greed_width", type=int, default=7) - -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) - ###################################################################### args = parser.parse_args() -assert args.picocvlr_prune_properties in {"none", "train+eval", "eval"} - if args.result_dir is None: args.result_dir = f"results_{args.task}" @@ -203,114 +89,6 @@ default_task_args = { "nb_train_samples": 250000, "nb_test_samples": 10000, }, - "file": { - "model": "37M", - "batch_size": 25, - "nb_train_samples": 250000, - "nb_test_samples": 10000, - }, - "addition": { - "model": "352M", - "batch_size": 25, - "nb_train_samples": 250000, - "nb_test_samples": 10000, - }, - "byheart": { - "model": "37M", - "batch_size": 25, - "nb_train_samples": 50000, - "nb_test_samples": 10000, - }, - "expr": { - "model": "352M", - "batch_size": 25, - "nb_train_samples": 2500000, - "nb_test_samples": 10000, - }, - "grid": { - "model": "37M", - "batch_size": 25, - "nb_train_samples": 250000, - "nb_test_samples": 10000, - }, - "qmlp": { - "model": "37M", - "batch_size": 10, - "nb_train_samples": 100000, - "nb_test_samples": 1000, - }, - "guessop": { - "model": "352M", - "batch_size": 25, - "nb_train_samples": 1000000, - "nb_test_samples": 10000, - }, - "learnop": { - "model": "37M", - "batch_size": 25, - "nb_train_samples": 50000, - "nb_test_samples": 10000, - }, - "maze": { - "model": "37M", - "batch_size": 5, - "nb_train_samples": 100000, - "nb_test_samples": 10000, - }, - "picoclvr": { - "model": "37M", - "batch_size": 25, - "nb_train_samples": 250000, - "nb_test_samples": 10000, - }, - "rpl": { - "model": "352M", - "batch_size": 5, - "nb_train_samples": 2500000, - "nb_test_samples": 10000, - }, - "snake": { - "model": "37M", - "batch_size": 25, - "nb_train_samples": 250000, - "nb_test_samples": 10000, - }, - "stack": { - "model": "37M", - "batch_size": 25, - "nb_train_samples": 100000, - "nb_test_samples": 1000, - }, - "twotargets": { - "model": "37M", - "batch_size": 25, - "nb_train_samples": 50000, - "nb_test_samples": 10000, - }, - "memory": { - "model": "37M", - "batch_size": 100, - "nb_train_samples": 25000, - "nb_test_samples": 1000, - }, - "mixing": { - "model": "37M", - "batch_size": 25, - "nb_train_samples": 250000, - "nb_test_samples": 10000, - }, - "mnist": { - "model": "37M", - "batch_size": 10, - "nb_train_samples": 60000, - "nb_test_samples": 10000, - }, - "greed": { - "model": "37M", - "batch_size": 25, - "nb_train_samples": 25000, - "nb_test_samples": 10000, - }, } if args.task in default_task_args: @@ -406,24 +184,6 @@ for n in vars(args): ###################################################################### -def picoclvr_pruner_horizontal_green(p): - return not ("green" in p and ("left" in p or "right" in p)) - - -picoclvr_pruner_train = ( - picoclvr_pruner_horizontal_green - if args.picocvlr_prune_properties in {"train+eval"} - else None -) - -picoclvr_pruner_eval = ( - (lambda p: not picoclvr_pruner_horizontal_green(p)) - if args.picocvlr_prune_properties in {"train+eval", "eval"} - else None -) - -###################################################################### - if args.physical_batch_size is None: args.physical_batch_size = args.batch_size else: @@ -848,20 +608,22 @@ log_string(f"nb_parameters {nb_parameters} ({int(nb_parameters/1e6)}M)") accuracy_to_make_quizzes = 0.975 for n_epoch in range(args.nb_epochs): + # select the model with lowest accuracy models.sort(key=lambda model: model.main_test_accuracy) - model = models[0] log_string( f"training model {model.id} main_test_accuracy {model.main_test_accuracy}" ) + # improve it one_epoch(model, task) log_string( f"train_set_composition world {task.nb_batch_samples_world} quizzes {task.nb_batch_samples_quizzes}" ) + # test it run_tests(model, task, deterministic_synthesis=False) if model.main_test_accuracy >= accuracy_to_make_quizzes: