Exemplo n.º 1
0
 def create_word_rnn_model(self, emb_dim, emb_path, vocab_word,
                           vocab_word_size, word_maxlen):
     from keras.layers import SimpleRNN
     logger.info('Building word SimpleRNN model')
     input_word = Input(shape=(word_maxlen, ), name='input_word')
     word_emb = Embedding(
         vocab_word_size, emb_dim, mask_zero=True,
         name='word_emb')(input_word)
     rnn = SimpleRNN(
         300,
         return_sequences=True,
         dropout=self.dropout,
         recurrent_dropout=self.recurrent_dropout)(word_emb)
     dropped = Dropout(0.5)(rnn)
     mot = MeanOverTime(mask_zero=True)(dropped)
     densed = Dense(self.num_outputs, name='dense')(mot)
     output = Activation('sigmoid')(densed)
     model = Model(inputs=input_word, outputs=output)
     model.get_layer('dense').bias.set_value(self.bias)
     if emb_path:
         from emb_reader import EmbReader as EmbReader
         logger.info('Initializing lookup table')
         emb_reader = EmbReader(emb_path, emb_dim=emb_dim)
         model.get_layer('word_emb').embeddings.set_value(
             emb_reader.get_emb_matrix_given_vocab(
                 vocab_word,
                 model.get_layer('word_emb').embeddings.get_value()))
     logger.info('  Done')
     return model
Exemplo n.º 2
0
 def create_word_cnn_model(self, emb_dim, emb_path, vocab_word,
                           vocab_word_size, word_maxlen):
     from aes.layers import Conv1DMask
     logger.info('Building word CNN model')
     input_word = Input(shape=(word_maxlen, ), name='input_word')
     word_emb = Embedding(
         vocab_word_size, emb_dim, mask_zero=True,
         name='word_emb')(input_word)
     cnn = Conv1DMask(
         filters=emb_dim, kernel_size=3, padding='same')(word_emb)
     dropped = Dropout(0.5)(cnn)
     mot = MeanOverTime(mask_zero=True)(dropped)
     densed = Dense(self.num_outputs, name='dense')(mot)
     output = Activation('sigmoid')(densed)
     model = Model(inputs=input_word, outputs=output)
     model.get_layer('dense').bias.set_value(self.bias)
     if emb_path:
         from emb_reader import EmbReader as EmbReader
         logger.info('Initializing lookup table')
         emb_reader = EmbReader(emb_path, emb_dim=emb_dim)
         model.get_layer('word_emb').embeddings.set_value(
             emb_reader.get_emb_matrix_given_vocab(
                 vocab_word,
                 model.get_layer('word_emb').embeddings.get_value()))
     logger.info('  Done')
     return model
Exemplo n.º 3
0
 def create_char_cnn_model(self, emb_dim, word_maxlen, vocab_char_size,
                           char_maxlen):
     from aes.layers import Conv1DMask
     logger.info('Building character CNN model')
     input_char = Input(shape=(char_maxlen, ), name='input_char')
     char_emb = Embedding(
         vocab_char_size, emb_dim, mask_zero=True)(input_char)
     cnn = Conv1DMask(
         filters=emb_dim, kernel_size=3, padding='same')(char_emb)
     dropped = Dropout(0.5)(cnn)
     mot = MeanOverTime(mask_zero=True)(dropped)
     densed = Dense(self.num_outputs, name='dense')(mot)
     output = Activation('sigmoid')(densed)
     model = Model(inputs=input_char, outputs=output)
     model.get_layer('dense').bias.set_value(self.bias)
     logger.info('  Done')
     return model
Exemplo n.º 4
0
 def create_char_rnn_model(self, emb_dim, word_maxlen, vocab_char_size,
                           char_maxlen):
     from keras.layers import SimpleRNN
     logger.info('Building character RNN model')
     input_char = Input(shape=(char_maxlen, ), name='input_char')
     char_emb = Embedding(
         vocab_char_size, emb_dim, mask_zero=True)(input_char)
     rnn = SimpleRNN(
         300,
         return_sequences=True,
         dropout=self.dropout,
         recurrent_dropout=self.recurrent_dropout)(char_emb)
     dropped = Dropout(0.5)(rnn)
     mot = MeanOverTime(mask_zero=True)(dropped)
     densed = Dense(self.num_outputs, name='dense')(mot)
     output = Activation('sigmoid')(densed)
     model = Model(inputs=input_char, outputs=output)
     model.get_layer('dense').bias.set_value(self.bias)
     logger.info('  Done')
     return model
Exemplo n.º 5
0
 def create_gate_positional_model(self, char_cnn_kernel, cnn_kernel,
                                  emb_dim, emb_path, vocab_word,
                                  vocab_word_size, word_maxlen,
                                  vocab_char_size, char_maxlen):
     from aes.layers import Conv1DMask, GatePositional, MaxPooling1DMask
     logger.info('Building gate positional model')
     input_char = Input(shape=(char_maxlen, ), name='input_char')
     char_emb = Embedding(
         vocab_char_size, emb_dim, mask_zero=True)(input_char)
     char_cnn = Conv1DMask(
         filters=emb_dim,
         kernel_size=3,
         padding='same')(char_emb)
     char_input = MaxPooling1DMask(
         pool_size=char_maxlen / word_maxlen, padding='same')(char_cnn)
     input_word = Input(shape=(word_maxlen, ), name='input_word')
     word_input = Embedding(
         vocab_word_size, emb_dim, mask_zero=True,
         name='word_emb')(input_word)
     gate = GatePositional()([char_input, word_input])
     final_input = Dense(50)(gate)
     cnn = Conv1DMask(
         filters=emb_dim,
         kernel_size=3,
         padding='same')(final_input)
     dropped = Dropout(0.5)(cnn)
     mot = MeanOverTime(mask_zero=True)(dropped)
     densed = Dense(self.num_outputs, name='dense')(mot)
     output = Activation('sigmoid')(densed)
     model = Model(inputs=[input_char, input_word], outputs=output)
     model.get_layer('dense').bias.set_value(self.bias)
     if emb_path:
         from emb_reader import EmbReader as EmbReader
         logger.info('Initializing lookup table')
         emb_reader = EmbReader(emb_path, emb_dim=emb_dim)
         model.get_layer('word_emb').embeddings.set_value(
             emb_reader.get_emb_matrix_given_vocab(
                 vocab_word,
                 model.get_layer('word_emb').embeddings.get_value()))
     logger.info('  Done')
     return model