Exemplo n.º 1
0
 def from_flags(restore_dir, log_dir, restore_continue, restore_itr,
                restart_at_zero=False, strict='y'):
     if restore_dir is None:
         return None
     strict = {'y': True, 'n': False}[strict]
     return TrainRestorer(get_ckpts_dir(get_experiment_dir(log_dir, restore_dir)),
                          restore_continue, restore_itr, restart_at_zero, strict)
Exemplo n.º 2
0
    def from_flags(restore_dir,
                   log_dir,
                   restore_continue,
                   restore_itr,
                   restart_at_zero=False,
                   strict='y'):
        if restore_dir is None:
            return None
        strict = {'y': True, 'n': False}[strict]

        # TODO
        for postfix in ('', '/AWS'):
            try:
                experiment_dir = get_experiment_dir(log_dir + postfix,
                                                    restore_dir)
                break
            except ValueError as e:
                print(e)
        else:  # no-break
            raise ValueError('Not found!', restore_dir, log_dir)

        return TrainRestorer(get_ckpts_dir(experiment_dir), restore_continue,
                             restore_itr, restart_at_zero, strict)
Exemplo n.º 3
0
    def __init__(self, log_date, flags, restore_itr, l3c=False):
        """
        :param flags:
            log_dir
            img
            filter_filenames
            max_imgs_per_folder
            # out_dir
            crop
            recursive
            sample
            write_to_files
            compare_theory
            time_report
            overwrite_cache
        """
        self.flags = flags

        test_log_dir_root = self.flags.log_dir.rstrip(os.path.sep) + '_test'
        global_config.reset()

        config_ps, experiment_dir = MultiscaleTester.get_configs_experiment_dir(
            'ms', self.flags.log_dir, log_date)
        self.log_date = logdir_helpers.log_date_from_log_dir(experiment_dir)
        (self.config_ms, _), _ = ft.unzip(map(config_parser.parse, config_ps))
        global_config.update_config(self.config_ms)

        self.recursive = _parse_recursive_flag(self.flags.recursive,
                                               config_ms=self.config_ms)
        if self.flags.write_to_files and self.recursive:
            raise NotImplementedError(
                '--write_to_file not implemented for --recursive')

        if self.recursive:
            print(f'--recursive={self.recursive}')

        blueprint = MultiscaleBlueprint(self.config_ms)
        blueprint.set_eval()
        self.blueprint = blueprint

        self.restorer = saver.Restorer(paths.get_ckpts_dir(experiment_dir))
        self.restore_itr, ckpt_p = self.restorer.get_ckpt_for_itr(restore_itr)
        self.restorer.restore({'net': self.blueprint.net}, ckpt_p, strict=True)

        # test_log_dir/0311_1057 cr oi_012
        self.test_log_dir = os.path.join(test_log_dir_root,
                                         os.path.basename(experiment_dir))
        if self.flags.reset_entire_cache and os.path.isdir(self.test_log_dir):
            print(f'Removing test_log_dir={self.test_log_dir}...')
            time.sleep(1)
            shutil.rmtree(self.test_log_dir)
        os.makedirs(self.test_log_dir, exist_ok=True)
        self.test_output_cache = TestOutputCache(self.test_log_dir)

        self.times = cuda_timer.StackTimeLogger(
        ) if self.flags.write_to_files else None

        # Import only if needed, as it imports torchac
        if self.flags.write_to_files:
            check_correct_torchac_backend_available()
            from bitcoding.bitcoding import Bitcoding
            self.bc = Bitcoding(self.blueprint,
                                times=self.times,
                                compare_with_theory=self.flags.compare_theory)
        elif l3c:  # Called from l3c.py
            from bitcoding.bitcoding import Bitcoding
            self.bc = Bitcoding(self.blueprint, times=no_op.NoOp)