()
| 12 | cuda_exist = code_flag == 0 |
| 13 | |
| 14 | def test(): |
| 15 | args = parse_args() |
| 16 | print(args) |
| 17 | |
| 18 | if args.use_gpu and cuda_exist: |
| 19 | place = fluid.CUDAPlace(0) |
| 20 | print('GPU is used...') |
| 21 | else: |
| 22 | place = fluid.CPUPlace() |
| 23 | print('CPU is used...') |
| 24 | |
| 25 | with fluid.dygraph.guard(place): |
| 26 | print('start testing ... ') |
| 27 | |
| 28 | # prepare method |
| 29 | model = prepare_model(args) |
| 30 | |
| 31 | # load checkpoint |
| 32 | # model_dict, _ = fluid.dygraph.load_persistables("log/") |
| 33 | params_dict, opt_dict = fluid.load_dygraph(args.log_dir+'checkpoint/'+args.dataset+'/'+args.method+'_'+args.backbone+'_'+str(args.k_shot)+'shot_'+str(args.n_way)+'way') |
| 34 | model.load_dict(params_dict) |
| 35 | print("checkpoint loaded") |
| 36 | |
| 37 | # prepare optimizer |
| 38 | opt = prepare_optimizer(args, model) |
| 39 | |
| 40 | # prepare dataloader |
| 41 | test_data_batches = prepare_dataloader(args) |
| 42 | |
| 43 | model.eval() |
| 44 | accuracies = [] |
| 45 | losses = [] |
| 46 | for batch_id, batch in enumerate(test_data_batches): |
| 47 | samples, label = batch |
| 48 | samples = fluid.dygraph.to_variable(samples) |
| 49 | labels = fluid.dygraph.to_variable(label) |
| 50 | loss, acc = model.loss(samples, labels) |
| 51 | avg_loss = fluid.layers.mean(loss) |
| 52 | accuracies.append(acc.numpy()) |
| 53 | |
| 54 | mean = np.mean(accuracies) |
| 55 | stds = np.std(accuracies) |
| 56 | ci95 = 1.96*stds/np.sqrt(args.test_episodes) |
| 57 | print("meta-testing accuracy: {}, 95_confidence_interval: {}".format(mean, ci95)) |
| 58 | |
| 59 | if __name__ == "__main__": |
| 60 | test() |
no test coverage detected