optimizer.param_groups[1]["lr"] = LR * LRMUL elif epoch >= 3480 and epoch < 3640: optimizer.param_groups[0]["lr"] = LR * 5 * 0.04 optimizer.param_groups[1]["lr"] = LR * LRMUL * 0.001 elif epoch >= 3640 and epoch < 3800: optimizer.param_groups[0]["lr"] = LR * 5 * 0.008 optimizer.param_groups[1]["lr"] = LR * LRMUL * 0.001 elif epoch >= 3800 and epoch < 4000: optimizer.param_groups[0]["lr"] = LR * 5 * 0.0016 optimizer.param_groups[1]["lr"] = LR * LRMUL * 0.001 elif epoch > 4000: optimizer.param_groups[0]["lr"] = LRMUL * 5 * 0.0016 - LR * 5 * 3e-6 * (epoch - 4000) optimizer.param_groups[1]["lr"] = LR * LRMUL * 0.001 for i, data, in enumerate(train_loader, 0): network.zero_grad() img1 = data[0].to(device) img2 = data[1].to(device) matrix = data[2].to(device) matrix = matrix.view(-1, 8) batch_size = img1.size(0) f1, f2, output_mu, output_logvar, output_mu2, output_logvar2 = network(img1, img2) #sample_z = f2_sample.view(batch_size, mi_est_z_dim) output_logvar = output_logvar / DIVIDE std_sqr = torch.exp(output_logvar) output_logvar2 = output_logvar2 / DIVIDE std_sqr2 = torch.exp(output_logvar2) #sample t
elif epoch >= 3480 and epoch < 3640: optimizer.param_groups[0]['lr'] = opt.lr * 5 * 0.04 optimizer.param_groups[1]['lr'] = opt.lr * opt.lrMul * 0.001 elif epoch >= 3640 and epoch < 3800: optimizer.param_groups[0]['lr'] = opt.lr * 5 * 0.008 optimizer.param_groups[1]['lr'] = opt.lr * opt.lrMul * 0.001 elif epoch >= 3800 and epoch < 4000: optimizer.param_groups[0]['lr'] = opt.lr * 5 * 0.0016 optimizer.param_groups[1]['lr'] = opt.lr * opt.lrMul * 0.001 elif epoch >= 4000: optimizer.param_groups[0][ 'lr'] = opt.lr * 5 * 0.0016 - opt.lr * 5 * 3e-6 * (epoch - 4000) optimizer.param_groups[1]['lr'] = opt.lr * opt.lrMul * 0.001 for i, data in enumerate(train_dataloader, 0): net.zero_grad() img1 = data[0].to(device) img2 = data[1].to(device) matrix = data[2].to(device) matrix = matrix.view(-1, 8) batch_size = img1.size(0) f1, f2, output_mu, output_logvar = net(img1, img2) output_logvar = output_logvar / opt.divide std_sqr = torch.exp(output_logvar) err_matrix = criterion(output_mu, matrix) err = (torch.sum(output_logvar) + torch.sum( (output_mu - matrix) * (output_mu - matrix) / (std_sqr + 1e-4))) / batch_size err.backward()