def model(sequence_length=None):
graph = Graph()
graph.add_input(name='input', input_shape=(sequence_length, embedding_dim))
for fsz in filter_sizes:
conv = Convolution1D(nb_filter=num_filters,
filter_length=fsz,
border_mode='valid',
activation='relu',
subsample_length=1,
input_dim=embedding_dim,
input_length=sequence_length)
pool = MaxPooling1D(pool_length=sequence_length - fsz + 1)
graph.add_node(conv, name='conv-%s' % fsz, input='input')
graph.add_node(pool, name='maxpool-%s' % fsz, input='conv-%s' % fsz)
graph.add_node(
Flatten(),
name='flatten-%s' %
fsz,
input='maxpool-%s' %
fsz)
if len(filter_sizes) > 1:
graph.add_output(name='output',
inputs=['flatten-%s' % fsz for fsz in filter_sizes],
merge_mode='concat')
else:
graph.add_output(name='output', input='flatten-%s' % filter_sizes[0])
# main sequential model
model = Sequential()
model.add(
Embedding(
vocab_size,
embedding_dim,
input_length=sequence_length,
weights=[embedding_weights]))
model.add(
Dropout(
dropout_prob[0],
input_shape=(
sequence_length,
embedding_dim)))
model.add(graph)
model.add(Dense(hidden_dims))
model.add(Dropout(dropout_prob[1]))
model.add(Activation('relu'))
return model
# Input Layer with all the query, similar and non similar documents.
评论列表
文章目录