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)
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)
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)
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)
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))
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)