Exemple #1
0
def make_encoder(opt, embeddings, embeddings_inter=None):
    """
    Various encoder dispatcher function.
    Args:
        opt: the option in current environment.
        embeddings (Embeddings): vocab embeddings for this encoder.
    """
    if opt.encoder_type == "transformer":
        return TransformerEncoder(opt.enc_layers, opt.rnn_size, opt.dropout,
                                  embeddings)
    elif opt.encoder_type == "cnn":
        return CNNEncoder(opt.enc_layers, opt.rnn_size, opt.cnn_kernel_width,
                          opt.dropout, embeddings)
    elif opt.encoder_type == "mean":
        return MeanEncoder(opt.enc_layers, embeddings)
    elif opt.encoder_type == "double_encoder":
        print("The double encoder will be needed here")
        opt.brnn = True
        return DoubleRNNEncoder(opt.rnn_type, opt.brnn, opt.dec_layers,
                                opt.rnn_size, opt.dropout, embeddings,
                                embeddings_inter)
    else:
        # "rnn" or "brnn"
        print("The double encoder will be needed here")
        opt.brnn = True
        return RNNEncoder(opt.rnn_type, opt.brnn, opt.dec_layers, opt.rnn_size,
                          opt.dropout, embeddings)
Exemple #2
0
def make_encoder(opt, embeddings):
    """
    Various encoder dispatcher function.
    Args:
        opt: the option in current environment.
        embeddings (Embeddings): vocab embeddings for this encoder.
    """
    if opt.encoder_type == "transformer":
        return TransformerEncoder(opt.enc_layers, opt.rnn_size, opt.dropout,
                                  embeddings)
    elif opt.encoder_type == "cnn":
        return CNNEncoder(opt.enc_layers, opt.rnn_size, opt.cnn_kernel_width,
                          opt.dropout, embeddings)
    elif opt.encoder_type == "mean":
        return MeanEncoder(opt.enc_layers, embeddings)
    elif opt.encoder_type == "trigramrnn":
        return RNNTrigramsEncoder(opt.rnn_type, True, opt.enc_layers,
                                  opt.rnn_size, opt.dropout, embeddings,
                                  opt.bridge)

    else:
        # NOTE: THIS IS WHAT GETS TRIGGERED BY DEFAULT EXPERIMENT
        # "rnn" or "brnn"

        print('About to make encoder')
        print(f"opt.rnn_type={opt.rnn_type}")
        print(f"opt.brnn={opt.brnn}")
        print(f"opt.enc_layers={opt.enc_layers}")
        print(f"opt.rnn_size ={opt.rnn_size}")
        print(f"opt.dropout={opt.dropout}")
        print(f"embeddings={embeddings}")
        print(f"opt.bridge={opt.bridge}")

        return RNNEncoder(opt.rnn_type, opt.brnn, opt.enc_layers, opt.rnn_size,
                          opt.dropout, embeddings, opt.bridge)
Exemple #3
0
def make_encoder(opt, embeddings, morph_embeddings=None):
    """
    Various encoder dispatcher function.
    Args:
        opt: the option in current environment.
        embeddings (Embeddings): vocab embeddings for this encoder.
    """
    if opt.encoder_type == "transformer":
        return TransformerEncoder(opt.enc_layers, opt.rnn_size, opt.dropout,
                                  embeddings)
    elif opt.encoder_type == "cnn":
        return CNNEncoder(opt.enc_layers, opt.rnn_size, opt.cnn_kernel_width,
                          opt.dropout, embeddings)
    elif opt.encoder_type == "mean":
        return MeanEncoder(opt.enc_layers, embeddings)
    elif opt.encoder_type == "gcn":
        print('use gates = ', opt.gcn_use_gates)
        return GCNEncoder(embeddings, opt.gcn_num_inputs, opt.gcn_num_units,
                          opt.gcn_num_labels, opt.gcn_num_layers,
                          opt.gcn_in_arcs, opt.gcn_out_arcs,
                          opt.gcn_batch_first, opt.gcn_residual,
                          opt.gcn_use_gates, opt.gcn_use_glus,
                          morph_embeddings)
    else:
        # "rnn" or "brnn"
        return RNNEncoder(opt.rnn_type, opt.brnn, opt.enc_layers, opt.rnn_size,
                          opt.dropout, embeddings, opt.bridge)
def make_encoder(opt, embeddings, for_vae=False):
    """
    Various encoder dispatcher function.
    Args:
        opt: the option in current environment.
        embeddings (Embeddings): vocab embeddings for this encoder.
    """
    if for_vae:
        enc_layers = opt.enc_layers
        rnn_size = opt.rnn_size_vae
        dropout = opt.dropout_vae
    else:
        enc_layers = opt.enc_layers
        rnn_size = opt.rnn_size
        dropout = opt.dropout

    if opt.encoder_type == "transformer":
        return TransformerEncoder(opt.enc_layers, opt.rnn_size, opt.dropout,
                                  embeddings)
    elif opt.encoder_type == "cnn":
        return CNNEncoder(opt.enc_layers, opt.rnn_size, opt.cnn_kernel_width,
                          opt.dropout, embeddings)
    elif opt.encoder_type == "mean":
        return MeanEncoder(opt.enc_layers, embeddings)
    else:
        # "rnn" or "brnn"
        return RNNEncoder(opt.rnn_type, opt.brnn, enc_layers, rnn_size,
                          dropout, embeddings)
Exemple #5
0
def make_encoder(opt, embeddings):
    """
    Various encoder dispatcher function.
    Args:
        opt: the option in current environment.
        embeddings (Embeddings): vocab embeddings for this encoder.
    """
    if opt.encoder_type == "transformer":
        return TransformerEncoder(opt.enc_layers, opt.rnn_size,
                                  opt.dropout, embeddings)
    elif opt.encoder_type == "cnn":
        return CNNEncoder(opt.enc_layers, opt.rnn_size,
                          opt.cnn_kernel_width,
                          opt.dropout, embeddings)
    elif opt.encoder_type == "mean":
        return MeanEncoder(opt.enc_layers, embeddings)
    elif opt.encoder_type == "trigramrnn":
        return RNNTrigramsEncoder(opt.rnn_type, True, opt.enc_layers,
                          opt.rnn_size, opt.dropout, embeddings,
                          opt.bridge)
        
    else:
        # "rnn" or "brnn"
        return RNNEncoder(opt.rnn_type, opt.brnn, opt.enc_layers,
                          opt.rnn_size, opt.dropout, embeddings,
                          opt.bridge)
Exemple #6
0
def make_encoder(opt, embeddings):
    """
    Various encoder dispatcher function.
    Args:
        opt: the option in current environment.
        embeddings (Embeddings): vocab embeddings for this encoder.
    """
    if opt.encoder_type == "transformer":
        return TransformerEncoder(opt.enc_layers, opt.rnn_size, opt.dropout,
                                  embeddings)
    elif opt.encoder_type == "cnn":
        return CNNEncoder(opt.enc_layers, opt.rnn_size, opt.cnn_kernel_width,
                          opt.dropout, embeddings)
    elif opt.encoder_type == "mean":
        return MeanEncoder(opt.enc_layers, embeddings)
    else:
        # "rnn" or "brnn"
        return RNNEncoder(opt.rnn_type, opt.brnn, opt.enc_layers, opt.rnn_size,
                          opt.dropout, embeddings, opt.bridge, opt.elmo,
                          opt.elmo_size, opt.elmo_options, opt.elmo_weight,
                          opt.subword_elmo, opt.subword_elmo_size,
                          opt.subword_elmo_options, opt.subword_weight,
                          opt.subword_spm_model, opt.node2vec,
                          opt.node2vec_emb_size, opt.node2vec_weight,
                          use_gpu(opt))
Exemple #7
0
def make_encoder(opt, embeddings, mmod_imgw=False):
    """
    Various encoder dispatcher function.
    Args:
        opt: the option in current environment.
        embeddings (Embeddings): vocab embeddings for this encoder.
    """
    if opt.encoder_type == "transformer":
        if mmod_imgw:
            return multimodal.MultiModalTransformerEncoder(
                opt.enc_layers, opt.rnn_size,
                opt.img_feat_dim,
                opt.dropout, embeddings)

        else:
            return TransformerEncoder(opt.enc_layers, opt.rnn_size,
                                      opt.dropout, embeddings)
    elif opt.encoder_type == "cnn":
        return CNNEncoder(opt.enc_layers, opt.rnn_size,
                          opt.cnn_kernel_width,
                          opt.dropout, embeddings)
    elif opt.encoder_type == "mean":
        return MeanEncoder(opt.enc_layers, embeddings)
    else:
        # "rnn" or "brnn"
        return RNNEncoder(opt.rnn_type, opt.brnn, opt.enc_layers,
                          opt.rnn_size, opt.dropout, embeddings,
                          opt.bridge)