def __init__(self, hid_dim, latent_dim, enc_layers, dec_layers, dropout, enc_bi, dec_max_len, beam_size, WEAtt_type, encoder_emb, decoder_emb, pad_id): super(VAE, self).__init__() assert encoder_emb.num_embeddings == decoder_emb.num_embeddings assert encoder_emb.embedding_dim == decoder_emb.embedding_dim self.voc_size = encoder_emb.num_embeddings self.emb_dim = encoder_emb.embedding_dim self.hid_dim = hid_dim self.enc_layers = enc_layers self.dec_layers = dec_layers self.dropout = dropout self.enc_bi = enc_bi self.n_dir = 2 if self.enc_bi else 1 self.dec_max_len = dec_max_len self.beam_size = beam_size self.WEAtt_type = WEAtt_type self.latent_dim = latent_dim self.PostEncoder = Encoder(emb_dim=self.emb_dim, hid_dim=self.hid_dim, n_layer=self.enc_layers, dropout=self.dropout, bi=self.enc_bi, embedding=encoder_emb) self.RespEncoder = Encoder(emb_dim=self.emb_dim, hid_dim=self.hid_dim, n_layer=self.enc_layers, dropout=self.dropout, bi=self.enc_bi, embedding=encoder_emb) self.PriorGaussian = Gaussian(in_dim=self.hid_dim * self.n_dir * self.enc_layers, out_dim=self.latent_dim) self.PosteriorGaussian = Gaussian(in_dim=2 * self.hid_dim * self.n_dir * self.enc_layers, out_dim=self.latent_dim) self.PostRepr = nn.Linear(self.hid_dim * self.n_dir * self.enc_layers, self.emb_dim) self.Decoder = Decoder(voc_size=self.voc_size, latent_dim=self.latent_dim, emb_dim=self.emb_dim, hid_dim=self.hid_dim * self.n_dir, n_layer=self.dec_layers, dropout=self.dropout, max_len=self.dec_max_len, beam_size=self.beam_size, WEAtt_type=self.WEAtt_type, embedding=decoder_emb) self.BoW = nn.Linear(self.latent_dim, self.voc_size) self.criterionSeq = SeqLoss(voc_size=self.voc_size, pad=pad_id, end=None, unk=None)
def __init__(self, hid_dim, latent_dim, enc_layers, dec_layers, dropout, enc_bi, dec_max_len, beam_size, WEAtt_type, encoder_emb, decoder_emb, pad_id, n_flows, flow_type): super(VAE_NF, self).__init__() assert encoder_emb.num_embeddings == decoder_emb.num_embeddings assert encoder_emb.embedding_dim == decoder_emb.embedding_dim self.voc_size = encoder_emb.num_embeddings self.emb_dim = encoder_emb.embedding_dim self.hid_dim = hid_dim self.enc_layers = enc_layers self.dec_layers = dec_layers self.dropout = dropout self.enc_bi = enc_bi self.n_dir = 2 if self.enc_bi else 1 self.dec_max_len = dec_max_len self.beam_size = beam_size self.WEAtt_type = WEAtt_type self.latent_dim = latent_dim self.n_flows = n_flows self.flow_type = flow_type self.Encoder = Encoder(emb_dim=self.emb_dim, hid_dim=self.hid_dim, n_layer=self.enc_layers, dropout=self.dropout, bi=self.enc_bi, embedding=encoder_emb) self.PriorGaussian = torch.distributions.Normal( gpu_wrapper(torch.zeros(self.latent_dim)), gpu_wrapper(torch.ones(self.latent_dim))) self.PosteriorGaussian = Gaussian(in_dim=self.hid_dim * self.n_dir * self.enc_layers, out_dim=self.latent_dim) self.Decoder = Decoder(voc_size=self.voc_size, latent_dim=self.latent_dim, emb_dim=self.emb_dim, hid_dim=self.hid_dim * self.n_dir, n_layer=self.dec_layers, dropout=self.dropout, max_len=self.dec_max_len, beam_size=self.beam_size, WEAtt_type=self.WEAtt_type, embedding=decoder_emb) self.BoW = nn.Linear(self.latent_dim, self.voc_size) self.Flows = NormalizingFlows(cond_dim=self.hid_dim * self.n_dir * self.enc_layers, latent_dim=self.latent_dim, n_flows=self.n_flows, flow_type=self.flow_type) self.criterionSeq = SeqLoss(voc_size=self.voc_size, pad=pad_id, end=None, unk=None)
def __init__(self, hid_dim, latent_dim, enc_layers, dec_layers, dropout, enc_bi, dec_max_len, beam_size, WEAtt_type, encoder_emb, decoder_emb, pad_id): super(S_VAE, self).__init__() assert encoder_emb.num_embeddings == decoder_emb.num_embeddings assert encoder_emb.embedding_dim == decoder_emb.embedding_dim self.voc_size = encoder_emb.num_embeddings self.emb_dim = encoder_emb.embedding_dim self.hid_dim = hid_dim self.enc_layers = enc_layers self.dec_layers = dec_layers self.dropout = dropout self.enc_bi = enc_bi self.n_dir = 2 if self.enc_bi else 1 self.dec_max_len = dec_max_len self.beam_size = beam_size self.WEAtt_type = WEAtt_type self.latent_dim = latent_dim self.Encoder = Encoder(emb_dim=self.emb_dim, hid_dim=self.hid_dim, n_layer=self.enc_layers, dropout=self.dropout, bi=self.enc_bi, embedding=encoder_emb) self.PriorUniform = HypersphericalUniform(dim=self.latent_dim) self.PosteriorVMF = VonMisesFisherModule(in_dim=self.hid_dim * self.n_dir * self.enc_layers, out_dim=self.latent_dim) self.Decoder = Decoder(voc_size=self.voc_size, latent_dim=self.latent_dim, emb_dim=self.emb_dim, hid_dim=self.hid_dim * self.n_dir, n_layer=self.dec_layers, dropout=self.dropout, max_len=self.dec_max_len, beam_size=self.beam_size, WEAtt_type=self.WEAtt_type, embedding=decoder_emb) self.criterionSeq = SeqLoss(voc_size=self.voc_size, pad=pad_id, end=None, unk=None)