def model(self): x1 = L.Input(shape=(None, )) x2 = L.Input(shape=(self.hidden_size, )) x3 = L.Input(shape=(self.hidden_size, )) return tf.keras.Model(inputs=[x1, x2, x3], outputs=self.call(x1, x2, x3), name='AttGRUDecoder')
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.GRU(**config['layer_bi_gru'])), 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(embed_model.inputs, tensor)
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)
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.Conv1D(**config['conv1d_layer']), L.GlobalMaxPooling1D(**config['max_pool_layer']), L.Dense(**config['dense_layer']), 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(embed_model.inputs, 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.GRU(**config['layer_bgru']), name='layer_bgru'), L.Dropout(**config['layer_dropout'], name='layer_dropout'), 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
def __init__(self, embedding: ABCEmbedding, vocab_size: int, hidden_size: int = 1024): super(AttGRUDecoder, self).__init__() self.embedding = embedding self.hidden_size = hidden_size self.gru = tf.keras.layers.GRU(hidden_size, return_sequences=True, return_state=True, recurrent_initializer='glorot_uniform') self.fc = tf.keras.layers.Dense(vocab_size) # 用于注意力 self.attention = L.BahdanauAttention(hidden_size)
def _activation_layer(self) -> L.Layer: if self.multi_label: return L.Activation('sigmoid') else: return L.Activation('softmax')
def model(self) -> tf.keras.Model: x1 = L.Input(shape=(None, )) x2 = L.Input(shape=(self.hidden_size, )) return tf.keras.Model(inputs=[x1, x2], outputs=self.call(x1, x2), name='GRUEncoder')