def bilstm_self_mult_attention_model(self, params): """ Method builds uncompiled model of BiLSTM with self multiplicative attention Args: params: disctionary of parameters for NN Returns: Uncompiled model """ inp = Input(shape=(params['text_size'], params['embedding_size'])) output = Bidirectional(LSTM(params['units_lstm'], activation='tanh', return_sequences=True, kernel_regularizer=l2(params['coef_reg_lstm']), dropout=params['dropout_rate'], recurrent_dropout=params['rec_dropout_rate']))(inp) output = MaxPooling1D(pool_size=2, strides=3)(output) output = multiplicative_self_attention(output, n_hidden=params.get("self_att_hid"), n_output_features=params.get("self_att_out")) output = GlobalMaxPooling1D()(output) output = Dropout(rate=params['dropout_rate'])(output) output = Dense(params['dense_size'], activation=None, kernel_regularizer=l2(params['coef_reg_den']))(output) output = Activation('relu')(output) output = Dropout(rate=params['dropout_rate'])(output) output = Dense(self.n_classes, activation=None, kernel_regularizer=l2(params['coef_reg_den']))(output) act_output = Activation(params.get("last_layer_activation", "sigmoid"))(output) model = Model(inputs=inp, outputs=act_output) return model
def bilstm_self_mult_attention_model(self, units_lstm: int, dense_size: int, self_att_hid: int, self_att_out: int, coef_reg_lstm: float = 0., coef_reg_den: float = 0., dropout_rate: float = 0., rec_dropout_rate: float = 0., **kwargs) -> Model: """ Method builds uncompiled model of BiLSTM with self multiplicative attention. Args: units_lstm: number of units for LSTM. self_att_hid: number of hidden units in self-attention self_att_out: number of output units in self-attention dense_size: number of units for dense layer. coef_reg_lstm: l2-regularization coefficient for LSTM. Default: ``0.0``. coef_reg_den: l2-regularization coefficient for dense layers. Default: ``0.0``. dropout_rate: dropout rate to be used after BiLSTM and between dense layers. Default: ``0.0``. rec_dropout_rate: dropout rate for LSTM. Default: ``0.0``. kwargs: other non-used parameters Returns: keras.models.Model: uncompiled instance of Keras Model """ inp = Input(shape=(self.opt['text_size'], self.opt['embedding_size'])) output = Bidirectional( LSTM(units_lstm, activation='tanh', return_sequences=True, kernel_regularizer=l2(coef_reg_lstm), dropout=dropout_rate, recurrent_dropout=rec_dropout_rate))(inp) output = MaxPooling1D(pool_size=2, strides=3)(output) output = multiplicative_self_attention(output, n_hidden=self_att_hid, n_output_features=self_att_out) output = GlobalMaxPooling1D()(output) output = Dropout(rate=dropout_rate)(output) output = Dense(dense_size, activation=None, kernel_regularizer=l2(coef_reg_den))(output) output = Activation('relu')(output) output = Dropout(rate=dropout_rate)(output) output = Dense(self.n_classes, activation=None, kernel_regularizer=l2(coef_reg_den))(output) act_output = Activation( self.opt.get("last_layer_activation", "sigmoid"))(output) model = Model(inputs=inp, outputs=act_output) return model
def bilstm_self_mult_attention_model(self, units_lstm: int, dense_size: int, self_att_hid: int, self_att_out: int, coef_reg_lstm: float = 0., coef_reg_den: float = 0., dropout_rate: float = 0., rec_dropout_rate: float = 0., input_projection_size: Optional[int] = None, **kwargs) -> Model: """ Method builds uncompiled model of BiLSTM with self multiplicative attention. Args: units_lstm: number of units for LSTM. self_att_hid: number of hidden units in self-attention self_att_out: number of output units in self-attention dense_size: number of units for dense layer. coef_reg_lstm: l2-regularization coefficient for LSTM. Default: ``0.0``. coef_reg_den: l2-regularization coefficient for dense layers. Default: ``0.0``. dropout_rate: dropout rate to be used after BiLSTM and between dense layers. Default: ``0.0``. rec_dropout_rate: dropout rate for LSTM. Default: ``0.0``. input_projection_size: if not None, adds Dense layer (with ``relu`` activation) right after input layer to the size ``input_projection_size``. Useful for input dimentionaliry recuction. Default: ``None``. kwargs: other non-used parameters Returns: keras.models.Model: uncompiled instance of Keras Model """ inp = Input(shape=(self.opt['text_size'], self.opt['embedding_size'])) output = inp if input_projection_size is not None: output = Dense(input_projection_size, activation='relu')(output) output = Bidirectional(LSTM(units_lstm, activation='tanh', return_sequences=True, kernel_regularizer=l2(coef_reg_lstm), dropout=dropout_rate, recurrent_dropout=rec_dropout_rate))(output) output = MaxPooling1D(pool_size=2, strides=3)(output) output = multiplicative_self_attention(output, n_hidden=self_att_hid, n_output_features=self_att_out) output = GlobalMaxPooling1D()(output) output = Dropout(rate=dropout_rate)(output) output = Dense(dense_size, activation=None, kernel_regularizer=l2(coef_reg_den))(output) output = Activation('relu')(output) output = Dropout(rate=dropout_rate)(output) output = Dense(self.n_classes, activation=None, kernel_regularizer=l2(coef_reg_den))(output) act_output = Activation(self.opt.get("last_layer_activation", "sigmoid"))(output) model = Model(inputs=inp, outputs=act_output) return model