encA = EncoderA(args.wseed, zShared_dim=args.n_shared) decA = DecoderA(args.wseed, zShared_dim=args.n_shared) encB = EncoderB(args.wseed, zShared_dim=args.n_shared) decB = DecoderB(args.wseed, zShared_dim=args.n_shared) if CUDA: encA.cuda() decA.cuda() encB.cuda() decB.cuda() cuda_tensors(encA) cuda_tensors(decA) cuda_tensors(encB) cuda_tensors(decB) optimizer = torch.optim.Adam( list(encB.parameters()) + list(decB.parameters()) + list(encA.parameters()) + list(decA.parameters()), lr=args.lr) # # def elbo(q, pA, pB, lamb=1.0, annealing_factor=1.0): # muA_own = q['sharedA'].dist.loc.squeeze(0) # stdA_own = q['sharedA'].dist.scale.squeeze(0) # muB_own = q['sharedB'].dist.loc.squeeze(0) # stdB_own = q['sharedB'].dist.scale.squeeze(0) # # # from each of modality # reconst_loss_A = pA['images_own'].loss.mean() # kl_A = 0.5 * torch.sum(1 + torch.log(stdA_own ** 2 + EPS) - muA_own ** 2 - stdA_own ** 2, # dim=1).mean() #
encA = EncoderA(args.wseed, zPrivate_dim=args.n_private) decA = DecoderA(args.wseed, zPrivate_dim=args.n_private) encB = EncoderB(args.wseed) decB = DecoderB(args.wseed) if CUDA: encA.cuda() decA.cuda() encB.cuda() decB.cuda() cuda_tensors(encA) cuda_tensors(decA) cuda_tensors(encB) cuda_tensors(decB) optimizer = torch.optim.Adam(list(encB.parameters()) + list(decB.parameters()) + list(encA.parameters()) + list(decA.parameters()), lr=args.lr) def elbo(q, pA, pB, lamb=1.0, beta1=(1.0, 1.0, 1.0), beta2=(1.0, 1.0, 1.0), bias=1.0): # from each of modality reconst_loss_A, kl_A = probtorch.objectives.mws_tcvae.elbo( q,