def main(args): total_step = 100//args.EF # set random seed np.random.seed(args.seed) torch.manual_seed(args.seed) torch.cuda.manual_seed_all(args.seed) random.seed(args.seed) # prepare checkpoints and log folders if not os.path.exists(args.checkpoints_dir): os.makedirs(args.checkpoints_dir) if not os.path.exists(args.logs_dir): os.makedirs(args.logs_dir) # initialize dataset if args.dataset == 'visda': args.data_dir = os.path.join(args.data_dir, 'visda') data = Visda_Dataset(root=args.data_dir, partition='train', label_flag=None) elif args.dataset == 'office': args.data_dir = os.path.join(args.data_dir, 'Office') data = Office_Dataset(root=args.data_dir, partition='train', label_flag=None, source=args.source_name, target=args.target_name) elif args.dataset == 'home': args.data_dir = os.path.join(args.data_dir, 'OfficeHome') data = Home_Dataset(root=args.data_dir, partition='train', label_flag=None, source=args.source_name, target=args.target_name) elif args.dataset == 'visda18': args.data_dir = os.path.join(args.data_dir, 'visda18') data = Visda18_Dataset(root=args.data_dir, partition='train', label_flag=None) else: print('Unknown dataset!') args.class_name = data.class_name args.num_class = data.num_class args.alpha = data.alpha # setting experiment name label_flag = None selected_idx = None args.experiment = set_exp_name(args) logger = Logger(args) if not args.visualization: for step in range(total_step): print("This is {}-th step with EF={}%".format(step, args.EF)) trainer = ModelTrainer(args=args, data=data, step=step, label_flag=label_flag, v=selected_idx, logger=logger) # train the model args.log_epoch = 4 + step//2 trainer.train(step, epochs= 4 + (step) * 2, step_size=args.log_epoch) # pseudo_label pred_y, pred_score, pred_acc = trainer.estimate_label() # select data from target to source selected_idx = trainer.select_top_data(pred_score) # add new data label_flag, data = trainer.generate_new_train_data(selected_idx, pred_y, pred_acc) else: # load trained weights trainer = ModelTrainer(args=args, data=data) trainer.load_model_weight(args.checkpoint_path) vgg_feat, node_feat, target_labels, split = trainer.extract_feature() visualize_TSNE(node_feat, target_labels, args.num_class, args, split) plt.savefig('./node_tsne.png', dpi=300)
def main(args): # Modified here total_step = 100 // args.EF # set random seed np.random.seed(args.seed) torch.manual_seed(args.seed) torch.cuda.manual_seed_all(args.seed) random.seed(args.seed) # prepare checkpoints and log folders if not os.path.exists(args.checkpoints_dir): os.makedirs(args.checkpoints_dir) if not os.path.exists(args.logs_dir): os.makedirs(args.logs_dir) # initialize dataset if args.dataset == 'nusimg': args.data_dir = os.path.join(args.data_dir, 'visda') data = NUSIMG_Dataset(root=args.data_dir, partition='train', label_flag=None, source=args.source_path, target=args.target_path) elif args.dataset == 'office': args.data_dir = os.path.join(args.data_dir, 'Office') data = Office_Dataset(root=args.data_dir, partition='train', label_flag=None, source=args.source_path, target=args.target_path) elif args.dataset == 'mrc': data = MRC_Dataset(root=args.data_dir, partition='train', label_flag=None, source=args.source_path, target=args.target_path) else: print('Unknown dataset!') args.class_name = data.class_name args.num_class = data.num_class args.alpha = data.alpha # setting experiment name label_flag = None selected_idx = None args.experiment = set_exp_name(args) logger = Logger(args) trainer = ModelTrainer(args=args, data=data, label_flag=label_flag, v=selected_idx, logger=logger) for step in range(total_step): print("This is {}-th step with EF={}%".format(step, args.EF)) # train the model args.log_epoch = 5 trainer.train(epochs=24, step=step) #24 # psedo_label pred_y, pred_score, pred_acc = trainer.estimate_label() # select data from target to source selected_idx = trainer.select_top_data(pred_score) # add new data trainer.generate_new_train_data(selected_idx, pred_y, pred_acc)