def create_decoder(config, training_representation, sampling_representation): if config["combination"] == 'concat': enc_nhids = config["enc_nhids"] * 4 else: enc_nhids = config["enc_nhids"] * 2 decoder = Decoder(config['trg_vocab_size'], config['dec_embed'], config['dec_nhids'], enc_nhids) decoder.weights_init = IsotropicGaussian(config['weight_scale']) decoder.biases_init = Constant(0) decoder.push_initialization_config() decoder.transition.weights_init = Orthogonal() decoder.initialize() cost, samples, search_model, punctuation_marks, mask = use_decoder_on_representations( decoder, training_representation, sampling_representation) return decoder, cost, samples, search_model, punctuation_marks, mask