def build_model_arc(self) -> None:
        config = self.hyper_parameters
        output_dim = self.label_processor.vocab_size
        embed_model = self.embedding.embed_model

        # 定义模型架构
        self.tf_model = keras.Sequential([
            embed_model,
            L.Bidirectional(L.LSTM(**config['layer_lstm1'])),
            L.Bidirectional(L.LSTM(**config['layer_lstm2'])),
            L.Dropout(**config['layer_dropout']),
            L.Dense(output_dim, **config['layer_output']),
            self._activation_layer()
        ])
Beispiel #2
0
    def build_model_arc(self):
        """
        build model architectural
        """
        output_dim = len(self.processor.label2idx)
        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        layer_blstm = L.Bidirectional(L.LSTM(**config['layer_blstm']),
                                      name='layer_blstm')

        layer_dense = L.Dense(**config['layer_dense'], name='layer_dense')
        layer_crf_dense = L.Dense(output_dim, name='layer_crf_dense')
        layer_crf = CRF(output_dim, name='layer_crf')
        layer_dropout = L.Dropout(**config['layer_dropout'],
                                  name='layer_dropout')
       


        tensor = layer_blstm(embed_model.output)
        tensor = layer_dense(tensor)
        tensor = layer_dropout(tensor)
        tensor = layer_crf_dense(tensor)
        output_tensor = layer_crf(tensor)

        self.layer_crf = layer_crf
        self.tf_model = keras.Model(embed_model.inputs, output_tensor)
Beispiel #3
0
    def build_model_arc(self):
        """
        build model architectural
        """
        output_dim = len(self.pre_processor.label2idx)
        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        layer_blstm = L.Bidirectional(L.LSTM(**config['layer_blstm']),
                                      name='layer_blstm')
        layer_self_attention = SeqSelfAttention(**
                                                config['layer_self_attention'],
                                                name='layer_self_attention')
        layer_dropout = L.Dropout(**config['layer_dropout'],
                                  name='layer_dropout')

        layer_time_distributed = L.TimeDistributed(
            L.Dense(output_dim, **config['layer_time_distributed']),
            name='layer_time_distributed')
        layer_activation = L.Activation(**config['layer_activation'])

        tensor = layer_blstm(embed_model.output)
        tensor = layer_self_attention(tensor)
        tensor = layer_dropout(tensor)
        tensor = layer_time_distributed(tensor)
        output_tensor = layer_activation(tensor)

        self.tf_model = keras.Model(embed_model.inputs, output_tensor)
Beispiel #4
0
    def build_model_arc(self):
        """
        build model architectural
        """
        output_dim = len(self.pre_processor.label2idx)
        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        layer_blstm = L.Bidirectional(L.LSTM(**config['layer_blstm']),
                                      name='layer_blstm')

        layer_LSTMDecoder = LSTMDecoder(**config['layer_LSTMDecoder'],
                                        name='layer_LSTMDecoder')
        layer_dense = L.Dense(**config['layer_dense'], name='layer_dense')
        layer_decoder_dense = L.Dense(output_dim, name='layer_decoder_dense')
        softmax_layer = L.Activation(tf.nn.softmax, name="softmax_layer")

        tensor = layer_blstm(embed_model.output)
        tensor = layer_LSTMDecoder(tensor)
        tensor = layer_dense(tensor)
        tensor = layer_decoder_dense(tensor)
        output_tensor = softmax_layer(tensor)

        self.layer_LSTMDecoder = layer_LSTMDecoder
        self.tf_model = keras.Model(embed_model.inputs, output_tensor)
Beispiel #5
0
    def build_model_arc(self):
        """
        build model architectural
        """
        output_dim = len(self.pre_processor.label2idx)
        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        layer_blstm = L.Bidirectional(L.LSTM(**config['layer_blstm']),
                                      name='layer_blstm')

        layer_dense = L.Dense(**config['layer_dense'], name='layer_dense')
        layer_crf_dense = L.Dense(output_dim, name='layer_crf_dense')
        layer_crf = CRF(output_dim, name='layer_crf')

        if isinstance(embed_model, keras.Model):
            first_layer_output = embed_model.output
            first_layer_input = embed_model.inputs
        else:
            first_layer_output = embed_model
            first_layer_input = embed_model

        tensor = layer_blstm(first_layer_output)
        tensor = layer_dense(tensor)
        tensor = layer_crf_dense(tensor)
        output_tensor = layer_crf(tensor)

        self.layer_crf = layer_crf
        self.tf_model = keras.Model(first_layer_input, output_tensor)
Beispiel #6
0
    def build_model_arc(self):
        output_dim = self.processor.output_dim
        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        layer_bi_lstm = L.Bidirectional(L.LSTM(**config['layer_bi_lstm']))
        layer_dense = L.Dense(output_dim, **config['layer_dense'])

        tensor = layer_bi_lstm(embed_model.output)
        output_tensor = layer_dense(tensor)

        self.tf_model = keras.Model(embed_model.inputs, output_tensor)
Beispiel #7
0
    def build_model_arc(self):
        output_dim = len(self.processor.label2idx)
        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        # Define your layers
        layer_blstm1 = L.Bidirectional(L.LSTM(**config['layer_blstm1']),
                                       name='layer_blstm1')
        layer_blstm2 = L.Bidirectional(L.LSTM(**config['layer_blstm2']),
                                       name='layer_blstm2')

        layer_blstm3 = L.Bidirectional(L.LSTM(**config['layer_blstm3']),
                                       name='layer_blstm3')

        layer_dropout1 = L.Dropout(**config['layer_dropout1'],
                                   name='layer_dropout1')

        layer_dropout2 = L.Dropout(**config['layer_dropout2'],
                                   name='layer_dropout2')

        layer_dropout3 = L.Dropout(**config['layer_dropout3'],
                                   name='layer_dropout3')

        #layer_flatten = L.Flatten(**config['layer_flatten'])
        #layer_activation = L.Activation(**config['layer_activation'])
        layer_dense = L.Dense(output_dim, **config['layer_dense'])

        # Define tensor flow
        tensor = layer_dropout1(embed_model.output)
        tensor = layer_blstm1(tensor)
        tensor = layer_dropout2(tensor)
        tensor = layer_blstm2(tensor)
        #tensor = layer_dropout3(tensor)
        #tensor = layer_blstm3(tensor)
        output_tensor = layer_dense(tensor)

        # Init model
        self.tf_model = keras.Model(embed_model.inputs, output_tensor)
    def build_model_arc(self) -> None:
        output_dim = self.label_processor.vocab_size

        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        crf = KConditionalRandomField()

        layer_stack = [
            L.Bidirectional(L.LSTM(**config['layer_blstm1']),
                            name='layer_blstm1'),
            L.Bidirectional(L.LSTM(**config['layer_blstm2']),
                            name='layer_blstm2'),
            L.Dropout(**config['layer_dropout'], name='layer_dropout'),
            L.TimeDistributed(
                L.Dense(output_dim, **config['layer_time_distributed'])), crf
        ]

        tensor = embed_model.output
        for layer in layer_stack:
            tensor = layer(tensor)

        self.tf_model = keras.Model(embed_model.inputs, tensor)
        self.crf_layer = crf
Beispiel #9
0
    def build_model_arc(self):
        output_dim = len(self.pre_processor.label2idx)
        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        layers_seq = []
        layers_seq.append(L.Conv1D(**config['conv_layer']))
        layers_seq.append(L.MaxPooling1D(**config['max_pool_layer']))
        layers_seq.append(L.LSTM(**config['lstm_layer']))
        layers_seq.append(L.Dense(output_dim, **config['activation_layer']))

        tensor = embed_model.output
        for layer in layers_seq:
            tensor = layer(tensor)

        self.tf_model = tf.keras.Model(embed_model.inputs, tensor)
Beispiel #10
0
    def build_model_arc(self) -> None:
        output_dim = self.label_processor.vocab_size

        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        # build model structure in sequent way
        layer_stack = [
            L.Bidirectional(L.LSTM(**config['layer_bi_lstm'])),
            L.Dense(output_dim, **config['layer_output']),
            self._activation_layer()
        ]

        tensor = embed_model.output
        for layer in layer_stack:
            tensor = layer(tensor)

        self.tf_model: keras.Model = keras.Model(embed_model.inputs, tensor)
Beispiel #11
0
    def build_model_arc(self) -> None:
        output_dim = self.label_processor.vocab_size

        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        layer_stack = [
            L.Bidirectional(L.LSTM(**config['layer_blstm']),
                            name='layer_blstm'),
            L.Dropout(**config['layer_dropout'], name='layer_dropout'),
            L.Dense(output_dim, **config['layer_time_distributed']),
            L.Activation(**config['layer_activation'])
        ]
        tensor = embed_model.output
        for layer in layer_stack:
            tensor = layer(tensor)

        self.tf_model = keras.Model(embed_model.inputs, tensor)
Beispiel #12
0
    def build_model_arc(self):
        config = self.hyper_parameters
        embed_model = self.embedding.embed_model

        layer_bi_lstm = L.Bidirectional(L.LSTM(**config['layer_bi_lstm']),
                                        name='layer_bi_lstm')
        layer_output_1 = L.Dense(3,
                                 activation='sigmoid',
                                 name='layer_output_1')
        layer_output_2 = L.Dense(3,
                                 activation='sigmoid',
                                 name='layer_output_2')

        tensor = layer_bi_lstm(embed_model.output)
        output_tensor_1 = layer_output_1(tensor)
        output_tensor_2 = layer_output_2(tensor)

        self.tf_model = tf.keras.Model(embed_model.inputs,
                                       [output_tensor_1, output_tensor_2])