def _prepare_model(self): base_model = self.embedding.model blstm_layer = Bidirectional( LSTM(**self.hyper_parameters['lstm_layer']))(base_model.output) dense_layer = Dense(128, activation='tanh')(blstm_layer) crf = CRF(len(self.label2idx), sparse_target=False) crf_layer = crf(dense_layer) self.model = Model(base_model.inputs, crf_layer)
def build_model(self): base_model = self.embedding.model blstm_layer = Bidirectional(LSTM(**self.hyper_parameters['lstm_layer']))(base_model.output) dense_layer = Dense(128, activation='tanh')(blstm_layer) crf = CRF(len(self.label2idx), sparse_target=False) crf_layer = crf(dense_layer) model = Model(base_model.inputs, crf_layer) model.compile(loss=crf_loss, optimizer='adam', metrics=[crf_accuracy]) self.model = model self.model.summary()
def _prepare_model(self): base_model = self.embedding.model emb = base_model.output emb = SpatialDropout1D(0.3)(emb) emb = TimestepDropout(0.1)(emb) blstm_out = Bidirectional(CuDNNLSTM(**self.hyper_parameters['lstm_layer']))(emb) blstm_out = BatchNormalization()(blstm_out) dense_ = Dense(512, activation='relu')(blstm_out) dense_ = SpatialDropout1D(0.5)(dense_) dense_ = TimestepDropout(0.2)(dense_) crf_out = CRF(len(self.label2idx), sparse_target=False)(dense_) self.model = Model(base_model.inputs, crf_out)
def create_custom_objects(model_info): custom_objects = {} loss = model_info.get('loss') if loss and loss['name'] == 'weighted_categorical_crossentropy': loss_f = helper.weighted_categorical_crossentropy( np.array(loss['weights'])) custom_objects['loss'] = loss_f if loss and loss['name'] == 'crf': custom_objects['CRF'] = CRF custom_objects['crf_loss'] = crf_loss custom_objects['crf_viterbi_accuracy'] = CRF(128).accuracy return custom_objects
def create_custom_objects(model_info): custom_objects = {} loss = model_info.get('loss') if loss and loss['name'] == 'weighted_categorical_crossentropy': loss_f = helper.weighted_categorical_crossentropy( np.array(loss['weights'])) custom_objects['loss'] = loss_f if loss and loss['name'] == 'crf': custom_objects['CRF'] = CRF custom_objects['crf_loss'] = crf_loss custom_objects['crf_viterbi_accuracy'] = CRF(128).accuracy embedding = model_info.get('embedding') if embedding and embedding['type'] == 'bert': custom_objects['NonMaskingLayer'] = helper.NonMaskingLayer custom_objects.update(get_bert_custom_objects()) return custom_objects
def _prepare_model(self): base_model = self.embedding.model emb = base_model.output emb = SpatialDropout1D(0.3)(emb) crf_out = CRF(len(self.label2idx), sparse_target=False)(emb) self.model = Model(base_model.inputs, crf_out)