Esempio n. 1
0
			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
Esempio n. 2
0
    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()