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)
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)
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)