def build_models(params, index_embedding):
in_layer = Input(shape=(params['max_len'],), dtype='int32')
mid_layer = Embedding(input_dim=params['num_words'],
output_dim=params['embedding_len'],
weights=[index_embedding])(in_layer)
# mid_layer = LSTM(params['lstm_output_dim'], return_sequences=True,
# dropout=0.5, recurrent_dropout=0.5)(mid_layer)
mid_layer = Bidirectional(LSTM(params['lstm_output_dim'], return_sequences=True,
dropout=0.5, recurrent_dropout=0.5)) (mid_layer)
mid_layer = Dense(params['dense_units'])(mid_layer)
mid_layer = Dropout(0.3)(mid_layer)
mid_layer = Flatten()(mid_layer)
if (params['num_class'] == 2):
loss = 'binary_crossentropy'
out_layer = Dense(units=1, activation='sigmoid')(mid_layer)
else:
loss = 'categorical_crossentropy'
out_layer = Dense(units=params['num_class'], activation='softmax')(mid_layer)
single_model = Model(inputs=in_layer, outputs=out_layer)
single_model.compile(loss=loss, optimizer='rmsprop', metrics=['accuracy'])
return single_model
评论列表
文章目录