def build_model(self):
     self.Encoder = Encoder(self.in_channels, self.storing_channels,
                            self.nf).to(self.device)
     self.Decoder = Decoder(self.storing_channels, self.in_channels,
                            self.nf).to(self.device)
     self.Disciminator = Discriminator().to(self.device)
     self.load_model()
Exemple #2
0
    def __init__(self, args):
        super(Seq2Seq, self).__init__()

        self.beam = args.beam

        self.encoder = Encoder(args)
        self.decoder = Decoder(args)
    def _initialize_layers(self, input_data_size, layer_list=None):
        prev_output_size = input_data_size
        for ind, layer_size in enumerate(layer_list):
            # Create an Encoder and Decoder for each element in the layer list.
            # For encoders, output size is the current element of layer list.
            # For decoders, output size is equal to the *input* size of the Encoder at this layer.
            # because Decoder(Encoder(data)) == data
            self.encode_layers.append(
                Encoder(layer_size, name="Encoder_Layer_" + str(ind)))
            if ind == 0:
                self.decode_layers.append(
                    Decoder(prev_output_size,
                            name="Decoder_Layer_" + str(ind),
                            end=True))
            else:
                self.decode_layers.append(
                    Decoder(prev_output_size,
                            name="Decoder_Layer_" + str(ind)))

            self.layer_sizes.append((prev_output_size, layer_size))
            # Build checkpoint directories for each layer.
            cpt_dirname = FLAGS.checkpoint_dir + self.get_layer_checkpoint_dirname(
                ind)

            if not path.isdir(cpt_dirname):
                makedirs(cpt_dirname)

            prev_output_size = layer_size
 def __init__(self,
              vocab_size_src: int,
              vocab_size_trg: int,
              eos_int: int,
              sos_int: int,
              dim_embed_src: int = 512,
              src_map_i2c: Union[Dict[int, str], None] = None,
              trg_map_i2c: Union[Dict[int, str], None] = None,
              dim_embed_trg: int = 512,
              num_neurons_encoder: int = 512,
              num_neurons_decoder: int = 512,
              optim: object = GradientDescentMomentum):
     assert dim_embed_trg == num_neurons_decoder, (
         "For weight tying, the number of neurons in the decoder has to be" +
         "the same as the number of dimensions in the embedding")
     # These don't have to be equal. If they aren't, you will need an
     # additional weight matrix after the encoder to project down or
     # up to the dimensionality of the decoder, adding extra complexity.
     # Kept symmetric for simplicities sake
     assert num_neurons_decoder == num_neurons_encoder, (
         "Currently this model only supports symmetric decoders and encoders"
     )
     self.src_dim = vocab_size_src
     self.trg_map_i2c = trg_map_i2c
     self.src_map_i2c = src_map_i2c
     self.optim = optim
     self.encoder = Encoder(vocab_size_src, dim_embed_src,
                            num_neurons_encoder, optim)
     self.decoder = Decoder(vocab_size_trg, dim_embed_trg,
                            num_neurons_decoder, optim)
     self.eos_int = eos_int
     self.sos_int = sos_int
Exemple #5
0
 def __init__(self, activate_encoder):
     super(Tacotron3, self).__init__()
     if activate_encoder:
         self.encoder = Encoder()
     else:
         self.encoder = SimpleEncoder()
     self.decoder = Decoder(activate_encoder)
     self.postnet = Postnet()
Exemple #6
0
 def __init__(self, config):
     super().__init__()
     self.decoder = Decoder.build({**config["decoder"], "rename": True})
     self.soft_mem_mask = config["decoder"]["mem_mask"] == "soft"
     if self.soft_mem_mask:
         self.mem_encoder = Encoder.build(config["mem_encoder"])
         self.mem_decoder = Decoder.build(config["mem_decoder"])
         self.decoder.mem_encoder = self.mem_encoder
         self.decoder.mem_decoder = self.mem_decoder
     self.beam_size = config["test"]["beam_size"]
Exemple #7
0
 def __init__(self, config):
     super().__init__()
     self.decoder = Decoder.build({**config["decoder"]})
     self.subtype = config["decoder"]["type"] in ["XfmrSubtypeDecoder"]
     self.soft_mem_mask = config["decoder"]["mem_mask"] == "soft"
     if self.soft_mem_mask:
         self.mem_encoder = Encoder.build(config["mem_encoder"])
         self.mem_decoder = Decoder.build(config["mem_decoder"])
         self.decoder.mem_encoder = self.mem_encoder
         self.decoder.mem_decoder = self.mem_decoder
     self.beam_size = config["test"]["beam_size"]
Exemple #8
0
    def __init__(self):
        super(Tacotron2, self).__init__()

        self.embedding = nn.Embedding(hps.n_symbols,
                                      hps.character_embedding_dim)
        std = sqrt(2.0 / (hps.n_symbols + hps.character_embedding_dim))
        val = sqrt(3.0) * std
        self.embedding.weight.data.uniform_(-val, val)

        self.encoder = Encoder()
        self.decoder = Decoder()
        self.postnet = PostNet()
Exemple #9
0
    def __init__(self,
                 gen_emb,
                 domain_emb,
                 ae_nums,
                 as_nums,
                 ds_nums,
                 iters=15,
                 dropout=0.5,
                 use_transission=True):
        """
        :param gen_emb: 通用词向量权重
        :param domain_emb: 领域词向量权重
        :param ae_nums: aspect和opinion word抽取的标签种类
        :param as_nums: aspect sentiment种类
        :param ds_nums: doc sentiment种类
        :param iters: message passing轮数
        :param dropout:
        :param use_opinion: AE和AS之间是否建立联系
        """
        super(NewImn, self).__init__()
        self.iters = iters
        self.use_transission = use_transission
        self.dropout = nn.Dropout(dropout)
        # f_s
        self.general_embedding = torch.nn.Embedding(gen_emb.shape[0],
                                                    gen_emb.shape[1])
        self.general_embedding.weight = torch.nn.Parameter(gen_emb,
                                                           requires_grad=False)
        self.domain_embedding = torch.nn.Embedding(domain_emb.shape[0],
                                                   domain_emb.shape[1])
        self.domain_embedding.weight = torch.nn.Parameter(domain_emb,
                                                          requires_grad=False)
        self.encoder_shared = MultiLayerCNN(400, 0, dropout=dropout)

        # f_ae
        self.encoder_aspect = nn.GRU(256,
                                     128,
                                     num_layers=1,
                                     batch_first=True,
                                     bidirectional=True)
        # self.encoder_aspect = MultiLayerCNN(256,2,dropout=dropout)
        self.decoder_aspect = Decoder(912, ae_nums)

        # f_as
        self.encoder_sentiment = nn.GRU(661,
                                        256,
                                        num_layers=1,
                                        batch_first=True,
                                        bidirectional=True)
        self.decoder_sentiment = Decoder(768, as_nums)
        # update
        self.update = nn.Linear(256 + as_nums + ae_nums, 256)
    def __init__(self, config: HiDDenConfiguration, noiser: Noiser):

        super(EncoderDecoder, self).__init__()
        self.encoder = Encoder(config)
        self.noiser = noiser

        self.decoder = Decoder(config)
Exemple #11
0
    def __init__(self,
                 num_encoder,
                 num_decoder,
                 d_model,
                 num_heads,
                 dff,
                 inp_max_seq_len,
                 tar_max_seq_len,
                 inp_vocab_size,
                 tar_vocab_size,
                 rate=0.1):
        super(Transformer, self).__init__()
        encoder_params = {
            "num_encoder": num_encoder,
            "num_heads": num_heads,
            "d_model": d_model,
            "dff": dff,
            "max_seq_len": inp_max_seq_len,
            "vocab_size": inp_vocab_size,
            "rate": rate
        }
        self.encoder = Encoder(**encoder_params)
        decoder_params = {
            "num_decoder": num_decoder,
            "num_heads": num_heads,
            "d_model": d_model,
            "dff": dff,
            "max_seq_len": tar_max_seq_len,
            "vocab_size": tar_vocab_size,
            "rate": rate
        }
        self.decoder = Decoder(**decoder_params)

        self.final_dense = keras.layers.Dense(tar_vocab_size)
    def __init__(self, embedding_info: Dict, encoder_info: Dict,
                 decoder_info: Dict, hidden_states: Dict, token_to_id: Dict,
                 type_to_id: Dict, label_to_id: Dict):
        super().__init__()

        self.embedding_info = embedding_info
        self.encoder_info = encoder_info
        self.decoder_info = decoder_info

        self.hidden_states = hidden_states

        self.token_to_id = token_to_id
        self.type_to_id = type_to_id
        self.label_to_id = label_to_id

        self.embedding = Embedding(h_emb=self.hidden_states['embedding'],
                                   token_to_id=self.token_to_id,
                                   type_to_id=self.type_to_id,
                                   **self.embedding_info)
        self.encoder = Encoder(h_emb=self.hidden_states['embedding'],
                               h_enc=self.hidden_states['encoder'],
                               **self.encoder_info)
        self.decoder = Decoder(h_enc=self.hidden_states['encoder'],
                               h_dec=self.hidden_states['decoder'],
                               label_to_id=self.label_to_id,
                               **self.decoder_info)
Exemple #13
0
def make_model(src_vocab,
               tgt_vocab,
               N=6,
               d_model=512,
               d_ff=2048,
               h=8,
               dropout=0.1):
    c = copy.deepcopy
    attn = MultiHeadedAttention(h, d_model).to(args.device)
    ff = PositionwiseFeedForward(d_model, d_ff, dropout).to(args.device)
    position = PositionalEncoding(d_model, dropout).to(args.device)
    model = Transformer(
        Encoder(
            EncoderLayer(d_model, c(attn), c(ff), dropout).to(args.device),
            N).to(args.device),
        Decoder(
            DecoderLayer(d_model, c(attn), c(attn), c(ff),
                         dropout).to(args.device), N).to(args.device),
        nn.Sequential(
            Embeddings(d_model, src_vocab).to(args.device), c(position)),
        nn.Sequential(
            Embeddings(d_model, tgt_vocab).to(args.device), c(position)),
        Generator(d_model, tgt_vocab)).to(args.device)

    # This was important from their code.
    # Initialize parameters with Glorot / fan_avg.
    for p in model.parameters():
        if p.dim() > 1:
            nn.init.xavier_uniform_(p)
    return model.to(args.device)
Exemple #14
0
def build_transformer(source_vocab,
                      target_vocab,
                      trg_pad_idx,
                      src_pad_idx,
                      num_layers=6,
                      num_attention_layers=8,
                      d_model=512,
                      d_ff=2048,
                      dropout=0.1):
    # we can do a shared vocab here to share the weights for two embeddings and outputgenerator projection
    positional_encoder = PositionalEncoder(d_model, dropout)
    encoder = Encoder(num_layers,
                      num_attention_layers,
                      d_model,
                      d_ff,
                      dropout=dropout)
    decoder = Decoder(num_layers,
                      num_attention_layers,
                      d_model,
                      d_ff,
                      dropout=dropout)
    source_embedding = nn.Sequential(
        Embedder(source_vocab, d_model, src_pad_idx),
        copy.deepcopy(positional_encoder))
    target_embedding = nn.Sequential(
        Embedder(target_vocab, d_model, trg_pad_idx),
        copy.deepcopy(positional_encoder))
    generator = OutputGenerator(d_model, target_vocab)
    model = Transformer(encoder, decoder, generator, source_embedding,
                        target_embedding, trg_pad_idx, src_pad_idx)
    for p in model.parameters():
        if p.dim() > 1:
            nn.init.xavier_uniform(p)
    return model
    def __init__(self, src_pad_idx, trg_pad_idx, trg_sos_idx, enc_voc_size,
                 dec_voc_size, d_model, n_head, max_len, ffn_hidden, n_layers,
                 drop_prob, device):
        super().__init__()
        self.src_pad_idx = src_pad_idx
        self.trg_pad_idx = trg_pad_idx
        self.trg_sos_idx = trg_sos_idx
        self.device = device
        self.encoder = Encoder(d_model=d_model,
                               n_head=n_head,
                               max_len=max_len,
                               ffn_hidden=ffn_hidden,
                               enc_voc_size=enc_voc_size,
                               drop_prob=drop_prob,
                               n_layers=n_layers,
                               device=device)

        self.decoder = Decoder(d_model=d_model,
                               n_head=n_head,
                               max_len=max_len,
                               ffn_hidden=ffn_hidden,
                               dec_voc_size=dec_voc_size,
                               drop_prob=drop_prob,
                               n_layers=n_layers,
                               device=device)
Exemple #16
0
 def __init__(self, latent_dim: int = 128, image_channels: int = 3):
     super().__init__()
     self.latent_dim = latent_dim
     self.encoder = Encoder(in_channels=image_channels,
                            latent_dim=latent_dim)
     self.decoder = Decoder(latent_dims=latent_dim,
                            out_channels=image_channels,
                            image_size=(72, 72))
    def __init__(self, embed_dims, num_chars, encoder_dims, decoder_dims,
                 n_mels, fft_bins, postnet_dims, encoder_K, lstm_dims,
                 postnet_K, num_highways, dropout, speaker_latent_dims,
                 speaker_encoder_dims, n_speakers, noise_latent_dims,
                 noise_encoder_dims):
        super().__init__()
        self.n_mels = n_mels
        self.lstm_dims = lstm_dims
        self.decoder_dims = decoder_dims

        # Standard Tacotron #############################################################
        self.encoder = Encoder(embed_dims, num_chars, encoder_dims, encoder_K,
                               num_highways, dropout)
        self.encoder_proj = nn.Linear(decoder_dims, decoder_dims, bias=False)
        self.decoder = Decoder(n_mels, decoder_dims, lstm_dims,
                               speaker_latent_dims, noise_latent_dims)
        self.postnet = CBHG(postnet_K, n_mels + noise_latent_dims,
                            postnet_dims, [256, n_mels + noise_latent_dims],
                            num_highways)
        self.post_proj = nn.Linear(postnet_dims * 2, fft_bins, bias=False)

        # VAE Domain Adversarial ########################################################
        if hp.encoder_model == "CNN":
            self.speaker_encoder = CNNEncoder(n_mels, speaker_latent_dims,
                                              speaker_encoder_dims)
            self.noise_encoder = CNNEncoder(n_mels, noise_latent_dims,
                                            noise_encoder_dims)
        elif hp.encoder_model == "CNNRNN":
            self.speaker_encoder = CNNRNNEncoder(n_mels, speaker_latent_dims,
                                                 speaker_encoder_dims)
            self.noise_encoder = CNNRNNEncoder(n_mels, noise_latent_dims,
                                               noise_encoder_dims)

        self.speaker_speaker = Classifier(speaker_latent_dims, n_speakers)
        self.speaker_noise = Classifier(speaker_latent_dims, 2)
        self.noise_speaker = Classifier(noise_latent_dims, n_speakers)
        self.noise_noise = Classifier(noise_latent_dims, 2)
        ## speaker encoder prior
        self.speaker_latent_loc = nn.Parameter(
            torch.zeros(speaker_latent_dims), requires_grad=False)
        self.speaker_latent_scale = nn.Parameter(
            torch.ones(speaker_latent_dims), requires_grad=False)
        self.speaker_latent_prior = dist.Independent(
            dist.Normal(self.speaker_latent_loc, self.speaker_latent_scale), 1)
        ## noise encoder prior
        self.noise_latent_loc = nn.Parameter(torch.zeros(noise_latent_dims),
                                             requires_grad=False)
        self.noise_latent_scale = nn.Parameter(torch.ones(noise_latent_dims),
                                               requires_grad=False)
        self.noise_latent_prior = dist.Independent(
            dist.Normal(self.noise_latent_loc, self.noise_latent_scale), 1)

        #################################################################################

        self.init_model()
        self.num_params()
        self.register_buffer("step", torch.zeros(1).long())
        self.register_buffer("r", torch.tensor(0).long())
 def generate_caption(self, img_path, beam_size=2):
     """Caption generator
     Args:
         image_path: path to the image
     Returns:
         caption: caption, generated for a given image
     """
     # TODO: to avoid specify model again use frozen graph
     g = tf.Graph()
     # change some Parameters
     self.params.sample_gen = self.gen_method
     try:
         os.path.exists(img_path)
     except:
         raise ValueError("Image not found")
     with g.as_default():
         # specify rnn_placeholders
         ann_lengths_ps = tf.placeholder(tf.int32, [None])
         captions_ps = tf.placeholder(tf.int32, [None, None])
         images_ps = tf.placeholder(tf.float32, [None, 224, 224, 3])
         with tf.variable_scope("cnn"):
             image_embeddings = vgg16(images_ps, trainable_fe=True,
                                      trainable_top=True)
         features = image_embeddings.fc2
         # image fesatures [b_size + f_size(4096)] -> [b_size + embed_size]
         images_fv = tf.layers.dense(features, self.params.embed_size,
                                     name='imf_emb')
         # will use methods from Decoder class
         decoder = Decoder(images_fv, captions_ps,
                           ann_lengths_ps, self.params, self.data_dict)
         with tf.variable_scope("decoder"):
             _, _ = decoder.decoder()  # for initialization
         # if use cluster vectors
         if self.params.use_c_v:
             # cluster vectors from "Diverse and Accurate Image Description.." paper.
             c_i = tf.placeholder(tf.float32, [None, 90])
             c_i_emb = tf.layers.dense(c_i, self.params.embed_size,
                                       name='cv_emb')
             # map cluster vectors into embedding space
             decoder.c_i = c_i_emb
             decoder.c_i_ph = c_i
         # image_id
         im_id = [img_path.split('/')[-1]]
         saver = tf.train.Saver(tf.trainable_variables())
     with tf.Session(graph=g) as sess:
         saver.restore(sess, self.checkpoint_path)
         if self.params.use_c_v:
             c_v = self._c_v_generator(image)
         else:
             c_v = None
         im_shape = (224, 224) # VGG16
         image = np.expand_dims(load_image(img_path, im_shape), 0)
         if self.gen_method == 'beam_search':
             sent = decoder.beam_search(sess, im_id, image,
                                        images_ps, c_v,
                                        beam_size=beam_size)
         elif self.gen_method == 'greedy':
             sent, _ = decoder.online_inference(sess, im_id, image,
                                                images_ps, c_v=c_v)
         return sent
Exemple #19
0
 def _make_model(self):
     # embedding
     embedding = nn.Embedding(num_embeddings=self._config.vocab_size,
                              embedding_dim=self._config.embed_size)
     embedding.weight.data.copy_(
         torch.from_numpy(np.load(self._config.embedding_file_name)))
     embedding.weight.requires_grad = False
     # encoder
     encoder = Encoder(rnn_type=self._config.rnn_type,
                       embed_size=self._config.embed_size,
                       hidden_size=self._config.hidden_size,
                       num_layers=self._config.num_layers,
                       bidirectional=self._config.bidirectional,
                       dropout=self._config.dropout)
     # birdge
     bridge = Bridge(rnn_type=self._config.rnn_type,
                     hidden_size=self._config.hidden_size,
                     bidirectional=self._config.bidirectional)
     # decoder rnn cell
     if self._config.rnn_type == 'LSTM':
         rnn_cell = MultiLayerLSTMCells(
             input_size=2 * self._config.embed_size,
             hidden_size=self._config.hidden_size,
             num_layers=self._config.num_layers,
             dropout=self._config.dropout)
     else:
         rnn_cell = MultiLayerGRUCells(input_size=2 *
                                       self._config.embed_size,
                                       hidden_size=self._config.hidden_size,
                                       num_layers=self._config.num_layers,
                                       dropout=self._config.dropout)
     # attention
     if self._config.attention_type == 'Dot':
         attention = DotAttention()
     elif self._config.attention_type == 'ScaledDot':
         attention = ScaledDotAttention()
     elif self._config.attention_type == 'Additive':
         attention = AdditiveAttention(query_size=self._config.hidden_size,
                                       key_size=self._config.hidden_size)
     elif self._config.attention_type == 'Multiplicative':
         attention = MultiplicativeAttention(
             query_size=self._config.hidden_size,
             key_size=self._config.hidden_size)
     elif self._config.attention_type == 'MLP':
         attention = MultiLayerPerceptronAttention(
             query_size=self._config.hidden_size,
             key_size=self._config.hidden_size,
             out_size=1)
     else:
         raise ValueError('No Supporting.')
     # decoder
     decoder = Decoder(embedding, rnn_cell, attention,
                       self._config.hidden_size)
     # model
     model = Seq2Seq(embedding, encoder, bridge, decoder)
     return model
Exemple #20
0
class Tacotron3(nn.Module):
    def __init__(self, activate_encoder):
        super(Tacotron3, self).__init__()
        if activate_encoder:
            self.encoder = Encoder()
        else:
            self.encoder = SimpleEncoder()
        self.decoder = Decoder(activate_encoder)
        self.postnet = Postnet()

    def forward(self, inputs):
        mel_source, mel_lengths, embedding, mel_target = inputs
        mel_lengths = mel_lengths.data

        encoder_outputs = self.encoder(mel_source, embedding)
        mel_outputs, alignments = self.decoder(encoder_outputs, mel_target,
                                               mel_lengths)

        end_padding_ind = get_reverse_mask(mel_lengths)
        mel_outputs_postnet = self.postnet(mel_outputs)

        # FIX This sollution is ugleh - is there a better way?
        mel_outputs = mel_outputs.permute(0, 2, 1)
        mel_outputs[end_padding_ind, :] = 0
        mel_outputs = mel_outputs.permute(0, 2, 1)

        mel_outputs_postnet = mel_outputs_postnet.permute(0, 2, 1)
        mel_outputs_postnet[end_padding_ind, :] = 0
        mel_outputs_postnet = mel_outputs_postnet.permute(0, 2, 1)

        mel_outputs_postnet = mel_outputs + mel_outputs_postnet

        return mel_outputs, mel_outputs_postnet, alignments

    def inference(self, inputs):
        mel_source, mel_lengths, embedding, _ = inputs

        encoder_outputs = self.encoder(mel_source, embedding)
        mel_outputs, _ = self.decoder.inference(encoder_outputs)

        end_padding_ind = get_reverse_mask(mel_lengths)
        mel_outputs_postnet = self.postnet(mel_outputs)

        # FIX This sollution is ugleh - is there a better way?
        mel_outputs = mel_outputs.permute(0, 2, 1)
        mel_outputs[end_padding_ind, :] = 0
        mel_outputs = mel_outputs.permute(0, 2, 1)

        mel_outputs_postnet = mel_outputs_postnet.permute(0, 2, 1)
        mel_outputs_postnet[end_padding_ind, :] = 0
        mel_outputs_postnet = mel_outputs_postnet.permute(0, 2, 1)

        mel_outputs_postnet = mel_outputs + mel_outputs_postnet

        return mel_outputs_postnet
    def __init__(self):
        super(Model, self).__init__()

        self.encoder = Encoder()
        self.decoder = Decoder()
        self.embeds = nn.Embedding(config.vocab_size, config.emb_dim)
        tools.init_wt_normal(self.embeds.weight)

        self.encoder = get_cuda(self.encoder)
        self.decoder = get_cuda(self.decoder)
        self.embeds = get_cuda(self.embeds)
Exemple #22
0
    def __init__(self,
                 config: HiDDenConfiguration,
                 noiser: Noiser,
                 apply_quantization: bool = False):
        # TODO: consider adding quantization after the noiser if the parameter value us true
        # TODO: consider making quantization part of noise configuration

        super(EncoderDecoder, self).__init__()
        self.encoder = Encoder(config)
        self.noiser = noiser  # TODO: we were passing device to Noiser

        self.decoder = Decoder(config)
Exemple #23
0
    def initialize(self, batch):
        '''
        param:
            batch: Batch object
        '''
        with tf.variable_scope('inference') as scope:
            linear_targets = batch._lin_targets
            is_training = linear_targets is not None
            batch_size = batch.get_size()

            # Encoder
            encoder = Encoder(is_training=is_training)
            encoder_outputs = encoder.encode(batch.get_embedds(),
                                             batch.get_input_lengths())

            # Decoder
            if is_training:
                helper = TrainingHelper(batch.get_inputs(),
                                        batch.get_mel_targets(),
                                        self._hparams.num_mels,
                                        self._hparams.outputs_per_step)
            else:
                helper = TestingHelper(batch_size, self._hparams.num_mels,
                                       self._hparams.outputs_per_step)
            decoder = Decoder(helper, is_training=is_training)
            mel_outputs, lin_outputs, final_decoder_state = decoder.decode(
                encoder_outputs, batch_size)

            # Alignments
            alignments = tf.transpose(
                final_decoder_state[0].alignment_history.stack(), [1, 2, 0])

            self.inputs, self.input_lengths, self.mel_targets, self.linear_targets = batch.get_all(
            )
            self.mel_outputs = mel_outputs
            self.linear_outputs = lin_outputs
            self.alignments = alignments
            self.global_step = tf.Variable(0,
                                           name='global_step',
                                           trainable=False)
Exemple #24
0
    def __init__(self, cfg):
        super(CenterNet, self).__init__()
        self.backbone = ResNet(cfg.slug)
        if cfg.fpn:
            self.fpn = FPN(self.backbone.outplanes)
        self.upsample = Decoder(
            self.backbone.outplanes if not cfg.fpn else 2048, cfg.bn_momentum)
        self.head = Head(channel=cfg.head_channel, num_classes=cfg.num_classes)

        self._fpn = cfg.fpn
        self.down_stride = cfg.down_stride
        self.score_th = cfg.score_th
        self.CLASSES_NAME = cfg.CLASSES_NAME
Exemple #25
0
    def build_pred(self):
        self.logger.info("Building model...")

        self.encoder = Encoder(self._config)
        self.decoder = Decoder(self._config, self._vocab.n_tok,
                               self._vocab.id_end)

        self._add_placeholders_op()
        self._add_pred_op()
        self._add_loss_op()

        self.init_session()

        self.logger.info("- done.")
 def __init__(self,
              vocab_size,
              embed_size,
              hidden_size,
              rnn_type='LSTM',
              num_layers=1,
              bidirectional=False,
              attention_type='Bilinear',
              dropout=0):
     super(Seq2Seq, self).__init__()
     self.embedding = nn.Embedding(num_embeddings=vocab_size,
                                   embedding_dim=embed_size)
     self.encoder = Encoder(embed_size=embed_size,
                            hidden_size=hidden_size,
                            rnn_type=rnn_type,
                            num_layers=num_layers,
                            bidirectional=bidirectional,
                            dropout=dropout)
     self.decoder = Decoder(embedding=self.embedding,
                            hidden_size=hidden_size,
                            rnn_type=rnn_type,
                            num_layers=num_layers,
                            attention_type=attention_type,
                            dropout=dropout)
Exemple #27
0
def build_decoder(hidden_size: int, embedding_dim: int, vocab_size: int):
    assert embedding_dim == hidden_size, (
        f"Different embedding_dim and hidden_size not implemented")
    decoder_layer = LSTMLayer(input_size=hidden_size, hidden_size=hidden_size)

    generator = Generator(hidden_size, embedding_dim)

    vocab_predictor = VocabPredictor(hidden_size, vocab_size)

    word_attention = AdditiveAttention(hidden_size, bias=True)
    agent_attention = AdditiveAttention(hidden_size, bias=True)

    return Decoder(decoder_layer=decoder_layer, vocab_predictor=vocab_predictor,
                   generator=generator, word_attention=word_attention,
                   agent_attention=agent_attention)
Exemple #28
0
class Seq2Seq(nn.Module):
    def __init__(self, args):
        super(Seq2Seq, self).__init__()

        self.beam = args.beam

        self.encoder = Encoder(args)
        self.decoder = Decoder(args)

    def forward(self, input_words, output_words, train=True):
        #Encoderに投げる
        encoder_outputs, encoder_hidden = self.encoder(
            input_words)  #(batch,seq_len,hidden_size*2)
        output=self.decoder(encoder_outputs,encoder_hidden,output_words,train) if self.beam==False else \
                self.decoder.beam_decode(encoder_outputs,encoder_hidden,output_words,train)
        return output
Exemple #29
0
    def build_train(self, config):
        """Builds model"""
        self.logger.info("Building model...")

        self.encoder = Encoder(self._config)
        self.decoder = Decoder(self._config, self._vocab.n_tok,
                               self._vocab.id_end)

        self._add_placeholders_op()
        self._add_pred_op()
        self._add_loss_op()

        self._add_train_op(config.lr_method, self.lr, self.loss, config.clip)
        self.init_session()

        self.logger.info("- done.")
Exemple #30
0
    def __init__(self, device):
        super().__init__()
        #Declare hyperparameters
        self.device = device
        self.encoder = Encoder(device).to(self.device)
        self.reduce_state = ReduceState(device).to(self.device)
        self.decoder = Decoder(device).to(self.device)

        self.decoder.embedding.weight = self.encoder.embedding.weight

        #self.max_text    = config.max_text
        self.max_sum = config.max_sum
        self.SP_index = config.SP_index
        #self.EP_index    = config.EP_index
        self.is_coverage = config.coverage
        self.hidden_dim = config.hid_dim