def main(config): # For fast training. cudnn.benchmark = True # Create directories if not exist. if not os.path.exists(config.log_dir): os.makedirs(config.log_dir) if not os.path.exists(config.model_save_dir): os.makedirs(config.model_save_dir) if not os.path.exists(config.sample_dir): os.makedirs(config.sample_dir) if not os.path.exists(config.result_dir): os.makedirs(config.result_dir) A_loader = get_loader('/data/dm/data/BU_3DFE/train', crop_size=900, image_size=100, batch_size=8, mode='train') B_loader = get_loader('/data/dm/data/RAF_DB/train', crop_size=100, image_size=100, batch_size=8, mode='train') # Solver for training and testing StarGAN. solver = Solver(A_loader, B_loader, config) solver.train_multi()
discriminator.cuda() classifier.cuda() adversarial_loss.cuda() task_loss.cuda() # Initialize weights generator.apply(weights_init_normal) discriminator.apply(weights_init_normal) classifier.apply(weights_init_normal) ######## writer = SummaryWriter('runs9') # # model = LeNet() # dummy_input = torch.rand(64, 3, 32, 32) #假设输入13张1*28*28的图片 # with SummaryWriter(comment='generator') as w: # w.add_graph(generator, (dummy_input, )) dataloader_A = get_loader('/data/dm/data/BU_3DFE/train',crop_size=900, image_size=opt.img_size, batch_size=opt.batch_size,num_workers=1) dataloader_B = get_loader('/data/dm/data/RAF_DB/train',crop_size=100, image_size=opt.img_size, batch_size=opt.batch_size,num_workers=1) # Optimizers optimizer_G = torch.optim.Adam( itertools.chain(generator.parameters(), classifier.parameters()), lr=opt.lr, betas=(opt.b1, opt.b2)) # g_optimizer = torch.optim.Adam(self.G.parameters(), self.g_lr, [self.beta1, self.beta2]) optimizer_D = torch.optim.Adam(discriminator.parameters(), lr=opt.lr, betas=(opt.b1, opt.b2)) FloatTensor = torch.cuda.FloatTensor if cuda else torch.FloatTensor LongTensor = torch.cuda.LongTensor if cuda else torch.LongTensor # ---------- # Training # ----------
# Initialize weights generator.apply(weights_init_normal) discriminator.apply(weights_init_normal) classifier.apply(weights_init_normal) ######## writer = SummaryWriter('runs1') # # model = LeNet() # dummy_input = torch.rand(64, 3, 32, 32) #假设输入13张1*28*28的图片 # with SummaryWriter(comment='generator') as w: # w.add_graph(generator, (dummy_input, )) #服务器上路径 # dataloader_A = get_loader('/data/dm/data/BU_3DFE/train',crop_size=900, # image_size=opt.img_size, batch_size=opt.batch_size,num_workers=1) # dataloader_B = get_loader('/data/dm/data/RAF_DB/train',crop_size=100, # image_size=opt.img_size, batch_size=opt.batch_size,num_workers=1) dataloader_A = get_loader('E:/Mydocuments/coders/DATASETS/BU_3DFE_backup/BU_3DFE/train',crop_size=900, image_size=opt.img_size, batch_size=opt.batch_size,num_workers=1) dataloader_B = get_loader('E:/Mydocuments/coders/DATASETS/RAF_DB/basic/images_aligned/train',crop_size=100, image_size=opt.img_size, batch_size=opt.batch_size,num_workers=1) # Optimizers optimizer_G = torch.optim.Adam( itertools.chain(generator.parameters(), classifier.parameters()), lr=opt.lr, betas=(opt.b1, opt.b2)) # g_optimizer = torch.optim.Adam(self.G.parameters(), self.g_lr, [self.beta1, self.beta2]) optimizer_D = torch.optim.Adam(discriminator.parameters(), lr=opt.lr, betas=(opt.b1, opt.b2)) FloatTensor = torch.cuda.FloatTensor if cuda else torch.FloatTensor LongTensor = torch.cuda.LongTensor if cuda else torch.LongTensor # ---------- # Training # ----------
if cuda: classifier.cuda() task_loss.cuda() # Initialize weights classifier.apply(weights_init_normal) ######## writer = SummaryWriter('runs') # # model = LeNet() # dummy_input = torch.rand(64, 3, 32, 32) #假设输入13张1*28*28的图片 # with SummaryWriter(comment='classifier') as w: # w.add_graph(classifier, (dummy_input, )) #E:/Mydocuments/coders/DATASETS/RAF_DB/basic/images_aligned/train #/data/dm/data/RAF_DB/train dataloader_A = get_loader('/data/dm/data/SFEW/train', crop_size=100, image_size=opt.img_size, batch_size=opt.batch_size, num_workers=1) dataloader_B = get_loader('/data/dm/data/SFEW/test', crop_size=100, image_size=opt.img_size, batch_size=opt.batch_size, num_workers=1) # Optimizers optimizer_C = torch.optim.Adam( classifier.parameters(), lr=opt.lr, betas=(opt.b1, opt.b2)) FloatTensor = torch.cuda.FloatTensor if cuda else torch.FloatTensor LongTensor = torch.cuda.LongTensor if cuda else torch.LongTensor # ------------------------------------------------- # Training # ------------------------------------------------- # Keeps 100 accuracy measurementsc train_performance = []