Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
    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
Пример #7
0
    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