def new(cls, args, src_meta, trg_meta, name=None): """ Builds a sequence to sequence model. Args: args: A dict containing all model parameters. src_meta: A dict containing source-side vocabulary meta data, e.g. eos_id, vocab_size. trg_meta: A dict containing target-side vocabulary meta data, e.g. eos_id, vocab_size. name: The name of the model. Returns: An encoder decoder model. """ # build source and target modality src_modality, trg_modality = cls.build_modalities(args, src_meta, trg_meta) encoder_params, decoder_params = {}, {} for f in cls.class_or_method_args(): if f.name in args: if f.name.startswith("encoder."): encoder_params[f.name[8:]] = args[f.name] elif f.name.startswith("decoder."): decoder_params[f.name[8:]] = args[f.name] # build encoder and decoder encoder = build_encoder({ "encoder.class": "TransformerEncoder", "encoder.params": encoder_params}) decoder = build_decoder({ "decoder.class": "TransformerDecoder", "decoder.params": decoder_params}) model = cls(args, src_meta, trg_meta, src_modality, trg_modality, encoder, decoder, name=name) fake_src = numpy.random.rand(1, 4, src_meta["audio_feature_dim"], src_meta["audio_feature_channels"]) fake_inputs = {"src": tf.convert_to_tensor(fake_src, tf.float32), "src_length": tf.convert_to_tensor([4], tf.int64), "trg_input": tf.convert_to_tensor([[1, 2, 3]], tf.int64), } _ = model(fake_inputs) return model
def new(cls, args, src_meta, trg_meta, name=None): """ Builds a sequence to sequence model. Args: args: A dict containing all model parameters. src_meta: A dict containing source-side vocabulary meta data, e.g. eos_id, vocab_size. trg_meta: A dict containing target-side vocabulary meta data, e.g. eos_id, vocab_size. name: The name of the model. Returns: An encoder decoder model. """ # build source and target modality src_modality, trg_modality = cls.build_modalities( args, src_meta, trg_meta) # build encoder and decoder encoder = build_encoder(args) decoder = build_decoder(args) model = cls(args, src_meta, trg_meta, src_modality, trg_modality, encoder, decoder, name=name) return model
def new(cls, args, src_meta, trg_meta, name=None): """ Builds a sequence to sequence model. Args: args: A dict containing all model parameters. src_meta: A dict containing source-side vocabulary meta data, e.g. eos_id, vocab_size. trg_meta: A dict containing target-side vocabulary meta data, e.g. eos_id, vocab_size. name: The name of the model. Returns: An encoder decoder model. """ # build source and target modality src_modality, trg_modality = cls.build_modalities( args, src_meta, trg_meta) # build encoder and decoder encoder = build_encoder(args) decoder = build_decoder(args) model = cls(args, src_meta, trg_meta, src_modality, trg_modality, encoder, decoder, name=name) _ = model({ "src": tf.convert_to_tensor([[1, 2, 3]], tf.int64), "src_padding": tf.convert_to_tensor([[0, 0., 0]], tf.float32), "trg_input": tf.convert_to_tensor([[1, 2, 3]], tf.int64) }) return model
def new(cls, args, src_meta, trg_meta, name=None): """ Builds a sequence to sequence model. Args: args: A dict containing all model parameters. src_meta: A dict containing source-side vocabulary meta data, e.g. eos_id, vocab_size. trg_meta: A dict containing target-side vocabulary meta data, e.g. eos_id, vocab_size. name: The name of the model. Returns: An encoder decoder model. """ # build source and target modality src_modality, trg_modality = cls.build_modalities( args, src_meta, trg_meta) encoder_params, decoder_params = {}, {} for f in cls.class_or_method_args(): if f.name in args: if f.name.startswith("encoder."): encoder_params[f.name[8:]] = args[f.name] elif f.name.startswith("decoder."): decoder_params[f.name[8:]] = args[f.name] # build encoder and decoder encoder = build_encoder({ "encoder.class": "LightConvolutionEncoder", "encoder.params": encoder_params }) decoder = build_decoder({ "decoder.class": "LightConvolutionDecoder", "decoder.params": decoder_params }) model = cls(args, src_meta, trg_meta, src_modality, trg_modality, encoder, decoder, name=name) # TODO: NOTE that we need to warm up the variable names. fake_inputs = { "src": tf.convert_to_tensor([[1, 2, 3]], tf.int64), "src_padding": tf.convert_to_tensor([[0, 0., 0]], tf.float32), "trg_input": tf.convert_to_tensor([[1, 2, 3]], tf.int64), } _ = model(fake_inputs) return model
def new(cls, args, src_meta, trg_meta, waitk_lagging, name=None): """ Builds a sequence to sequence model. Args: args: A dict containing all model parameters. src_meta: A dict containing source-side vocabulary meta data, e.g. eos_id, vocab_size. trg_meta: A dict containing target-side vocabulary meta data, e.g. eos_id, vocab_size. name: The name of the model. Returns: An encoder decoder model. """ # build source and target modality src_modality, trg_modality = cls.build_modalities( args, src_meta, trg_meta) encoder_params, decoder_params = {}, {} for f in cls.class_or_method_args(): if f.name in args: if f.name.startswith("encoder."): encoder_params[f.name[8:]] = args[f.name] elif f.name.startswith("decoder."): decoder_params[f.name[8:]] = args[f.name] # build encoder and decoder encoder = build_encoder({ "encoder.class": "TransformerEncoder", "encoder.params": encoder_params }) decoder = build_decoder({ "decoder.class": "TransformerDecoder", "decoder.params": decoder_params }) model = cls(args, src_meta, trg_meta, src_modality, trg_modality, encoder, decoder, name=name) model.wait_k = waitk_lagging _ = model({ "src": tf.convert_to_tensor([[1, 2, 3]], tf.int64), "src_padding": tf.convert_to_tensor([[0, 0., 0]], tf.float32), "trg_input": tf.convert_to_tensor([[1, 2, 3]], tf.int64) }) return model
def new(cls, args, src_meta, trg_meta, name=None): """ Builds a sequence to sequence model. Args: args: A dict containing all model parameters. src_meta: A dict containing source-side vocabulary meta data, e.g. eos_id, vocab_size. trg_meta: A dict containing target-side vocabulary meta data, e.g. eos_id, vocab_size. name: The name of the model. Returns: An encoder decoder model. """ # build source and target modality src_modality, trg_modality = cls.build_modalities( args, src_meta, trg_meta) encoder_params, decoder_params = {}, {} for f in cls.class_or_method_args(): if f.name in args: if f.name.startswith("encoder."): encoder_params[f.name[8:]] = args[f.name] elif f.name.startswith("decoder."): decoder_params[f.name[8:]] = args[f.name] # build encoder and decoder encoder = build_encoder({ "encoder.class": "TransformerEncoder", "encoder.params": encoder_params }) decoder = build_decoder({ "decoder.class": "TransformerDecoder", "decoder.params": decoder_params }) model = cls(args, src_meta, trg_meta, src_modality, trg_modality, encoder, decoder, name=name) return model
def new(cls, args, src_meta, trg_meta, name=None): """ Builds a sequence to sequence model. Args: args: A dict containing all model parameters. src_meta: A dict containing source-side vocabulary meta data, e.g. eos_id, vocab_size. trg_meta: A dict containing target-side vocabulary meta data, e.g. eos_id, vocab_size. name: The name of the model. Returns: An encoder decoder model. """ # build source and target modality src_modality, trg_modality = cls.build_modalities(args, src_meta, trg_meta) encoder_params, decoder_params = {}, {} for f in cls.class_or_method_args(): if f.name in args: if f.name.startswith("encoder."): encoder_params[f.name[8:]] = args[f.name] elif f.name.startswith("decoder."): decoder_params[f.name[8:]] = args[f.name] # build encoder and decoder encoder = None if args["bert_mode"] != "bert_as_encoder": encoder = build_encoder({ "encoder.class": "TransformerEncoder", "encoder.params": encoder_params}) decoder = build_decoder({ "decoder.class": "TransformerDecoder", "decoder.params": decoder_params}) with tf.name_scope(name or "ctnmt"): bert_model = Bert.new(get_hyper_parameters(args["bert_config"])["model.params"], vocab_meta=src_meta, name="bert") model = cls(args, bert_model, src_meta, trg_meta, src_modality, trg_modality, encoder, decoder, name=(name or "ctnmt")) _ = model({"src": tf.convert_to_tensor([[1, 2, 3]], tf.int64), "src_padding": tf.convert_to_tensor([[0, 0., 0]], tf.float32), "trg_input": tf.convert_to_tensor([[1, 2, 3]], tf.int64)}) return model