| 3 | |
| 4 | |
| 5 | class TestOptions(BaseOptions): |
| 6 | |
| 7 | def initialize(self, parser): |
| 8 | parser = BaseOptions.initialize(self, parser) |
| 9 | |
| 10 | parser.add_argument('--ckpt', type=str, default=None, |
| 11 | help='the checkpoint to test') |
| 12 | parser.add_argument('--aug_linear', type=str, default='NULL', |
| 13 | choices=['NULL', 'RA'], |
| 14 | help='linear evaluation augmentation') |
| 15 | parser.add_argument('--crop', type=float, default=0.2, |
| 16 | help='crop threshold for RandomResizedCrop') |
| 17 | parser.add_argument('--n_class', type=int, default=1000, |
| 18 | help='number of classes for linear probing') |
| 19 | |
| 20 | parser.set_defaults(epochs=60) |
| 21 | parser.set_defaults(learning_rate=30) |
| 22 | parser.set_defaults(lr_decay_epochs='30,40,50') |
| 23 | parser.set_defaults(lr_decay_rate=0.2) |
| 24 | parser.set_defaults(weight_decay=0) |
| 25 | |
| 26 | return parser |
| 27 | |
| 28 | def modify_options(self, opt): |
| 29 | opt = self.override_options(opt) |
| 30 | |
| 31 | iterations = opt.lr_decay_epochs.split(',') |
| 32 | opt.lr_decay_epochs = list([]) |
| 33 | for it in iterations: |
| 34 | opt.lr_decay_epochs.append(int(it)) |
| 35 | |
| 36 | # set up saving name |
| 37 | if opt.ckpt: |
| 38 | opt.model_name = opt.ckpt.split('/')[-2] |
| 39 | else: |
| 40 | print('warning: no pre-trained model!') |
| 41 | opt.model_name = 'Scratch' |
| 42 | opt.model_name = '{}_linear_{}_{}'.format( |
| 43 | opt.model_name, opt.aug_linear, opt.crop) |
| 44 | if opt.cosine: |
| 45 | opt.model_name = '{}_cosine'.format(opt.model_name) |
| 46 | |
| 47 | # create folders |
| 48 | opt.model_folder = os.path.join(opt.model_path, opt.model_name) |
| 49 | if not os.path.isdir(opt.model_folder): |
| 50 | os.makedirs(opt.model_folder) |
| 51 | opt.tb_folder = os.path.join(opt.tb_path, opt.model_name) |
| 52 | if not os.path.isdir(opt.tb_folder): |
| 53 | os.makedirs(opt.tb_folder) |
| 54 | |
| 55 | return opt |