tgt_encoder = LeNetEncoder().to(DEVICE) discriminator = Discriminator(input_dims=500, hidden_dims=500, output_dims=2).to(DEVICE) # In[5]: #Print models for source print(src_encoder) print(src_classifier) # In[6]: try: src_encoder.load_state_dict(torch.load('src_encoder.pth')) src_classifier.load_state_dict(torch.load('src_classifier.pth')) except FileNotFoundError: pretrain.train_src(src_encoder, src_classifier, source_train_loader, DEVICE) # In[7]: #Evaluate pretrained model pretrain.eval_src(src_encoder, src_classifier, source_train_loader, DEVICE) # In[8]: #Evaluate pretrained model pretrain.eval_src(src_encoder, src_classifier, target_test_loader, DEVICE) # In[9]:
target_encoder_pth = os.path.join(opt.save_dir, target_encoder_name) source_classifier_pth = os.path.join(opt.save_dir, source_classifier_name) else: print("ERROR: unrecognized target dataset name. Please input 'mnistm' or 'svhn', lower case only.") # Load models if os.path.exists(target_encoder_pth): print("---> found previously saved {}, loading checkpoint...".format(target_encoder_name)) target_encoder.load_state_dict( torch.load(target_encoder_pth) ) else: print("Error: target encoder not loaded") if os.path.exists(source_classifier_pth): print("---> found previously saved {}, loading checkpoint...".format(source_classifier_name)) source_classifier.load_state_dict( torch.load(source_classifier_pth) ) else: print("Error: source classifier not loaded") # Move to GPU if cuda: target_encoder = target_encoder.cuda() source_classifier = source_classifier.cuda() # ------------- # Predictions # ------------- print("---> generating predictions...")
def main(args): # read from args test_path = args.test_path d_target = args.d_target output_predict_path = args.output_predict_path ########## Arguments ########## batch_size = 128 # svhn, usps, mnistm if d_target == "mnistm": d_source = "usps" elif d_target == "svhn": d_source = "mnistm" else: d_source = "svhn" output_src_classifier_path = "./hw3-4/models/src_classifier_{}_{}.pth".format( d_source, d_target) output_tgt_encoder_path = "./hw3-4//models/tgt_encoder_{}_{}.pth".format( d_source, d_target) ############################# dataset = ReproduceDataset(test_path) dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=False) device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # init models tgt_encoder = LeNetEncoder() src_classifier = LeNetClassifier() # to device tgt_encoder.to(device) src_classifier.to(device) # init weights tgt_encoder.load_state_dict(torch.load( output_tgt_encoder_path, map_location=device)) src_classifier.load_state_dict(torch.load( output_src_classifier_path, map_location=device)) tgt_encoder.eval() src_classifier.eval() all_pred = [] for idx, targets in enumerate(dataloader): target_images = targets.to(device) target_bs = target_images.shape[0] with torch.no_grad(): preds = src_classifier(tgt_encoder(target_images)) # calculate label acc _, pred_labels = torch.max(preds, 1) all_pred.append(pred_labels) # save to predict pred = torch.cat(all_pred).cpu().numpy() image_names = ['{:05}.png'.format(i) for i in range(len(pred))] pd.DataFrame({ 'image_name': image_names, 'label': pred }).to_csv(output_predict_path, index=False)