from datasets import dataloaders from models.FRN import FRN args = trainer.train_parser() with open('../../../../config.yml', 'r') as f: temp = yaml.safe_load(f) data_path = os.path.abspath(temp['data_path']) fewshot_path = os.path.join(data_path, 'CUB_fewshot_raw') pm = trainer.Path_Manager(fewshot_path=fewshot_path, args=args) train_way = args.train_way shots = [args.train_shot, args.train_query_shot] train_loader = dataloaders.meta_train_dataloader( data_path=pm.train, way=train_way, shots=shots, transform_type=args.train_transform_type) model = FRN(way=train_way, shots=[args.train_shot, args.train_query_shot], resnet=args.resnet) train_func = partial(frn_train.default_train, train_loader=train_loader) tm = trainer.Train_Manager(args, path_manager=pm, train_func=train_func) tm.train(model) tm.evaluate(model)
data_path = os.path.abspath(temp['data_path']) fewshot_path = os.path.join(data_path, 'tiered-ImageNet_DeepEMD') pm = trainer.Path_Manager(fewshot_path=fewshot_path, args=args) train_way = args.train_way shots = [args.train_shot, args.train_query_shot] train_loader = dataloaders.meta_train_dataloader( data_path=pm.train, way=train_way, shots=shots, transform_type=args.train_transform_type) model = FRN(way=train_way, shots=[args.train_shot, args.train_query_shot], resnet=args.resnet) pretrained_model_path = '../ResNet-12_pretrain/model_ResNet-12.pth' #pretrained_model_path = '../../../../trained_model_weights/tiered-ImageNet_DeepEMD/FRN/ResNet-12_pretrain/model.pth' model.load_state_dict(torch.load(pretrained_model_path, map_location=util.get_device_map(args.gpu)), strict=False) train_func = partial(frn_train.default_train, train_loader=train_loader) tm = trainer.Train_Manager(args, path_manager=pm, train_func=train_func) tm.train(model)
from utils import util from trainers.eval import meta_test with open('../../../../config.yml', 'r') as f: temp = yaml.safe_load(f) data_path = os.path.abspath(temp['data_path']) test_path = os.path.join(data_path,'CUB_fewshot_raw/test_pre') model_path = './model_ResNet-12.pth' #model_path = '../../../../trained_model_weights/CUB_fewshot_raw/FRN/ResNet-12/model.pth' gpu = 0 torch.cuda.set_device(gpu) model = FRN(resnet=True) model.cuda() model.load_state_dict(torch.load(model_path,map_location=util.get_device_map(gpu)),strict=True) model.eval() with torch.no_grad(): way = 5 for shot in [1,5]: mean,interval = meta_test(data_path=test_path, model=model, way=way, shot=shot, pre=True, transform_type=None, trial=10000) print('%d-way-%d-shot acc: %.3f\t%.3f'%(way,shot,mean,interval))
from functools import partial sys.path.append('../../../../') from trainers import trainer, frn_train from datasets import dataloaders from models.FRN import FRN args = trainer.train_parser() with open('../../../../config.yml', 'r') as f: temp = yaml.safe_load(f) data_path = os.path.abspath(temp['data_path']) fewshot_path = os.path.join(data_path, 'mini-ImageNet') pm = trainer.Path_Manager(fewshot_path=fewshot_path, args=args) train_loader = dataloaders.normal_train_dataloader( data_path=pm.train, batch_size=args.batch_size, transform_type=args.train_transform_type) num_cat = len(train_loader.dataset.classes) model = FRN(is_pretraining=True, num_cat=num_cat, resnet=args.resnet) train_func = partial(frn_train.pre_train, train_loader=train_loader) tm = trainer.Train_Manager(args, path_manager=pm, train_func=train_func) tm.train(model) tm.evaluate(model)