def __init__(self, config): super(ADEM, self).__init__() self.num_layers = config.num_layers self.rnn = config.rnn self.bidirectional = config.bidirectional self.dropout = config.dropout # Encoder self.vocab_size = config.vocab_size self.embed_size = config.embedding_size self.hidden_size = config.encoder_hidden_size self.bidirectional = config.bidirectional self.encoder = layers.EncoderRNN(self.vocab_size, self.embed_size, self.hidden_size, self.rnn, self.num_layers, self.bidirectional, self.dropout) # Context Encoder self.context_size = config.context_size context_input_size = (self.num_layers * self.hidden_size * self.encoder.num_directions) self.context_encoder = layers.ContextRNN(context_input_size, self.context_size, self.rnn, self.num_layers, self.dropout)
def __init__(self, config): super(VHRED, self).__init__() self.config = config self.encoder = layers.EncoderRNN(config.vocab_size, config.embedding_size, config.encoder_hidden_size, config.rnn, config.num_layers, config.bidirectional, config.dropout, pretrained_wv_path=config.pretrained_wv_path) context_input_size = (config.num_layers * config.encoder_hidden_size * self.encoder.num_directions) self.context_encoder = layers.ContextRNN(context_input_size, config.context_size, config.rnn, config.num_layers, config.dropout) self.decoder = layers.DecoderRNN(config.vocab_size, config.embedding_size, config.decoder_hidden_size, config.rnncell, config.num_layers, config.dropout, config.word_drop, config.max_unroll, config.sample, config.temperature, config.beam_size) self.context2decoder = layers.FeedForward(config.context_size + config.z_utter_size, config.num_layers * config.decoder_hidden_size, num_layers=1, activation=config.activation) self.softplus = nn.Softplus() self.prior_h = layers.FeedForward(config.context_size, config.context_size, num_layers=2, hidden_size=config.context_size, activation=config.activation) self.prior_mu = nn.Linear(config.context_size, config.z_utter_size) self.prior_var = nn.Linear(config.context_size, config.z_utter_size) self.posterior_h = layers.FeedForward(config.encoder_hidden_size * self.encoder.num_directions * config.num_layers + config.context_size, config.context_size, num_layers=2, hidden_size=config.context_size, activation=config.activation) self.posterior_mu = nn.Linear(config.context_size, config.z_utter_size) self.posterior_var = nn.Linear(config.context_size, config.z_utter_size) if config.tie_embedding: self.decoder.embedding = self.encoder.embedding
def __init__(self, config): super(HRED, self).__init__() self.config = config self.encoder = layers.EncoderRNN(config.vocab_size, config.embedding_size, config.encoder_hidden_size, config.rnn, config.num_layers, config.bidirectional, config.dropout) context_input_size = (config.num_layers * config.encoder_hidden_size * self.encoder.num_directions) self.context_encoder = layers.ContextRNN(context_input_size, config.context_size, config.rnn, config.num_layers, config.dropout) self.decoder = layers.DecoderRNN( config.vocab_size, config.embedding_size, config.decoder_hidden_size, config.rnncell, config.num_layers, config.dropout, config.word_drop, config.max_unroll, config.sample, config.temperature, config.beam_size) self.context2decoder = layers.FeedForward(config.context_size, config.num_layers * config.decoder_hidden_size, num_layers=1, activation=config.activation) if config.tie_embedding: self.decoder.embedding = self.encoder.embedding
def __init__(self, config): super(ADEM, self).__init__() self.num_layers = config.num_layers self.rnn = config.rnn self.bidirectional = config.bidirectional self.dropout = config.dropout # Encoder self.vocab_size = config.vocab_size self.embed_size = config.embedding_size self.hidden_size = config.encoder_hidden_size self.bidirectional = config.bidirectional self.encoder = layers.EncoderRNN(self.vocab_size, self.embed_size, self.hidden_size, self.rnn, self.num_layers, self.bidirectional, self.dropout) # Context Encoder self.context_size = config.context_size context_input_size = (self.num_layers * self.hidden_size * self.encoder.num_directions) self.context_encoder = layers.ContextRNN(context_input_size, self.context_size, self.rnn, self.num_layers, self.dropout, ) bi_dir = 2 if self.bidirectional else 1 self.M = torch.zeros(self.hidden_size, self.hidden_size * bi_dir, requires_grad=True).cuda() self.N = torch.zeros(self.hidden_size * bi_dir, self.hidden_size * bi_dir, requires_grad=True).cuda() # initialize with identity nn.init.eye_(self.M) nn.init.eye_(self.N) self.sigmoid = torch.nn.Sigmoid() # score mode self.scoring_model = config.scoring_mode self.score_range = config.score_range
def __init__(self, config): super(VHCR, self).__init__() self.config = config self.encoder = layers.EncoderRNN(config.vocab_size, config.embedding_size, config.encoder_hidden_size, config.rnn, config.num_layers, config.bidirectional, config.dropout) context_input_size = (config.num_layers * config.encoder_hidden_size * self.encoder.num_directions + config.z_conv_size) self.context_encoder = layers.ContextRNN(context_input_size, config.context_size, config.rnn, config.num_layers, config.dropout) self.unk_sent = nn.Parameter( torch.randn(context_input_size - config.z_conv_size)) self.z_conv2context = layers.FeedForward(config.z_conv_size, config.num_layers * config.context_size, num_layers=1, activation=config.activation) context_input_size = (config.num_layers * config.encoder_hidden_size * self.encoder.num_directions) self.context_inference = layers.ContextRNN(context_input_size, config.context_size, config.rnn, config.num_layers, config.dropout, bidirectional=True) self.decoder = layers.DecoderRNN( config.vocab_size, config.embedding_size, config.decoder_hidden_size, config.rnncell, config.num_layers, config.dropout, config.word_drop, config.max_unroll, config.sample, config.temperature, config.beam_size) self.context2decoder = layers.FeedForward( config.context_size + config.z_sent_size + config.z_conv_size, config.num_layers * config.decoder_hidden_size, num_layers=1, activation=config.activation) self.softplus = nn.Softplus() self.conv_posterior_h = layers.FeedForward( config.num_layers * self.context_inference.num_directions * config.context_size, config.context_size, num_layers=2, hidden_size=config.context_size, activation=config.activation) self.conv_posterior_mu = nn.Linear(config.context_size, config.z_conv_size) self.conv_posterior_var = nn.Linear(config.context_size, config.z_conv_size) self.sent_prior_h = layers.FeedForward(config.context_size + config.z_conv_size, config.context_size, num_layers=1, hidden_size=config.z_sent_size, activation=config.activation) self.sent_prior_mu = nn.Linear(config.context_size, config.z_sent_size) self.sent_prior_var = nn.Linear(config.context_size, config.z_sent_size) self.sent_posterior_h = layers.FeedForward( config.z_conv_size + config.encoder_hidden_size * self.encoder.num_directions * config.num_layers + config.context_size, config.context_size, num_layers=2, hidden_size=config.context_size, activation=config.activation) self.sent_posterior_mu = nn.Linear(config.context_size, config.z_sent_size) self.sent_posterior_var = nn.Linear(config.context_size, config.z_sent_size) if config.tie_embedding: self.decoder.embedding = self.encoder.embedding
def __init__(self, config): super(VHUCM, self).__init__() self.config = config # user embedding if config.pretrained_uv_path is None: self.user_embedding = nn.Embedding(config.user_size, config.embedding_size) self.user_embedding.weight.requires_grad = True else: with open(config.pretrained_uv_path, 'rb') as f: weight_tensor = to_var(torch.FloatTensor(pickle.load(f))) self.user_embedding = nn.Embedding.from_pretrained(weight_tensor, freeze=False) self.encoder = layers.EncoderRNN(config.vocab_size, config.embedding_size, config.encoder_hidden_size, config.rnn, config.num_layers, config.bidirectional, config.dropout, pretrained_wv_path=config.pretrained_wv_path) context_input_size = (config.num_layers * config.encoder_hidden_size * self.encoder.num_directions + config.z_conv_size + config.embedding_size) self.context_encoder = layers.ContextRNN(context_input_size, config.context_size, config.rnn, config.num_layers, config.dropout) self.unk_sent = nn.Parameter(torch.randn(context_input_size - (config.z_conv_size + config.embedding_size))) self.z_conv2context = layers.FeedForward(config.z_conv_size, config.num_layers * config.context_size, num_layers=1, activation=config.activation) context_input_size = (config.num_layers * config.encoder_hidden_size * self.encoder.num_directions) self.context_inference = layers.ContextRNN(context_input_size, config.context_size, config.rnn, config.num_layers, config.dropout, bidirectional=True) self.decoder = layers.DecoderRNN(config.vocab_size, config.embedding_size, config.decoder_hidden_size, config.rnncell, config.num_layers, config.dropout, config.word_drop, config.max_unroll, config.sample, config.temperature, config.beam_size) self.context2decoder = layers.FeedForward(config.context_size + config.z_sent_size + config.z_conv_size, config.num_layers * config.decoder_hidden_size, num_layers=1, activation=config.activation) self.softplus = nn.Softplus() self.conv_prior_h = layers.FeedForward(2*config.embedding_size, config.embedding_size, num_layers=1, hidden_size=config.z_conv_size, activation=config.activation) self.conv_prior_mu = nn.Linear(config.embedding_size, config.z_conv_size) self.conv_prior_var = nn.Linear(config.embedding_size, config.z_conv_size) self.conv_posterior_h = layers.FeedForward(config.num_layers * self.context_inference.num_directions * config.context_size + 2*config.embedding_size, config.context_size, num_layers=2, hidden_size=config.context_size, activation=config.activation) self.conv_posterior_mu = nn.Linear(config.context_size, config.z_conv_size) self.conv_posterior_var = nn.Linear(config.context_size, config.z_conv_size) self.sent_prior_h = layers.FeedForward(config.context_size + config.z_conv_size, config.context_size, num_layers=1, hidden_size=config.z_sent_size, activation=config.activation) self.sent_prior_mu = nn.Linear(config.context_size, config.z_sent_size) self.sent_prior_var = nn.Linear(config.context_size, config.z_sent_size) self.sent_posterior_h = layers.FeedForward(config.z_conv_size + config.encoder_hidden_size * self.encoder.num_directions * config.num_layers + config.context_size, config.context_size, num_layers=2, hidden_size=config.context_size, activation=config.activation) self.sent_posterior_mu = nn.Linear(config.context_size, config.z_sent_size) self.sent_posterior_var = nn.Linear(config.context_size, config.z_sent_size) if config.tie_embedding: self.decoder.embedding = self.encoder.embedding if config.bow: self.bow_h = layers.FeedForward(config.z_sent_size, config.decoder_hidden_size, num_layers=1, hidden_size=config.decoder_hidden_size, activation=config.activation) self.bow_predict = nn.Linear(config.decoder_hidden_size, config.vocab_size)