def QuestionWithAnswersModel(embed_matrix, embed_input, sequence_length, ans_cnt, keywords_length, filter_sizes, num_filters, dropout_prob, hidden_dims, embedding_dim=300):
''' path1: question embedding (CNN model)
path2: answer embeddin(Hierachical RNN model)
merge
'''
# path 1
embed1 = Embedding(embed_input, embedding_dim,input_length=sequence_length, weights=[embed_matrix])
question_branch = Sequential()
cnn_model = TextCNN(sequence_length, embedding_dim, filter_sizes, num_filters)
question_branch.add(embed1)
question_branch.add(cnn_model)
# path 2
answer_branch = HierarchicalRNN(embed_matrix, embed_input, ans_cnt, keywords_length, embedding_dim)
merged = Merge([question_branch, answer_branch], mode='concat')
final_model = Sequential()
final_model.add(merged)
final_model.add(Dense(hidden_dims, W_constraint = maxnorm(3)))
final_model.add(Dropout(0.5))
final_model.add(Activation('relu'))
final_model.add(Dense(1))
final_model.add(Activation('sigmoid'))
final_model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
return final_model
# vim: set expandtab ts=4 sw=4 sts=4 tw=100:
评论列表
文章目录