def main(): cards_path = setting_exp.get('cards') field_vocabulary_path = setting_exp.get('field_vocabulary_path') spymaster_vocabulary_path = setting_exp.get('spymaster_vocabulary_path') keep_similarities_table = setting_exp.getint('keep_similarities_table') metrics_path = os.path.join(log_dir_path, "metrics.json") penalize_negative = setting_exp.getint('add_penalize_negative_for_clue_score') normalize_negative = setting_exp.getint('normalize_negative_for_score') # if not normalize_negative: # normalize_negative = 0 games_averaging = setup_averaging() wv_noise_std_range = setup_noise_params() threshold_delta_range = setup_threshold_delta() alpha_range = setup_alpha() # load embeddings. embeddings_spymaster, embeddings_guesser = setup_embeddings() # Create field, not initialized with cards yet. field = Field(field_logger, metrics_path, vocabulary_path=field_vocabulary_path) for game_count in range(games_averaging): # generate the field. similarities_table_path = os.path.join(model_dir_path, "game{}.pkl".format(game_count)) field.generate_cards() for wv_noise_std in wv_noise_std_range: # prepare dict for guesser noised_embeddings_dict = add_noise(model=embeddings_guesser, mean=0, std=wv_noise_std) # seems to be super slow, TBD field.logger.info("------Noise std set to {0:.2f}.-------\n".format(wv_noise_std)) for threshold_delta in threshold_delta_range: field.logger.info("------Delta set to {0:.3f}.-------\n".format(threshold_delta)) # For each noise level, play multiple games on different fields. for alpha in alpha_range: field.reset_scores() field.logger.info("------Alpha set to {0:.3f}.-------\n".format(alpha)) play_one_game(field, embeddings_spymaster, noised_embeddings_dict, spymaster_vocabulary_path, keep_similarities_table, similarities_table_path, threshold_delta, penalize_negative, normalize_negative, alpha, field_logger, team_logger, game_count) # Play games with different noise level. multiple_game_metrics = {"RED": defaultdict(list), "BLUE": defaultdict(list)} hparams = {"hparams_alpha": alpha, "hparams_delta": threshold_delta, "hparams_noise": wv_noise_std, "game_count": game_count+1 } for key, val in hparams.items(): multiple_game_metrics.update({key: val}) multiple_game_metrics = field.append_game_metrics(multiple_game_metrics) # Dump metrics of the games along with the hparams. field.dump_external_metrics(multiple_game_metrics) '''