是的,您可以使用函数 API 来实现。
这是一个小例子,您可以随意适应您的需要:
embed_input = Input(shape=(300,))
embedded_sequences = Embedding(10000, 10)(embed_input)
embed=SpatialDropout1D(0.5)(embedded_sequences)
gru=Bidirectional(CuDNNGRU(200, return_sequences = True))(embed)
conv=Conv1D(filters=4,
padding = "valid",
kernel_size=4,
kernel_initializer='he_uniform',
activation='relu')(gru)
avg_pool = GlobalAveragePooling1D()(conv)
max_pool = GlobalMaxPooling1D()(conv)
gru_pool = GlobalAveragePooling1D()(gru)
l_merge = concatenate([avg_pool, max_pool, gru_pool])
output = Dense(6, activation='sigmoid')(l_merge)
model = Model(embed_input, output)
model.summary()
output:
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_10 (InputLayer) (None, 300) 0
__________________________________________________________________________________________________
embedding_9 (Embedding) (None, 300, 10) 100000 input_10[0][0]
__________________________________________________________________________________________________
spatial_dropout1d_9 (SpatialDro (None, 300, 10) 0 embedding_9[0][0]
__________________________________________________________________________________________________
bidirectional_8 (Bidirectional) (None, 300, 400) 254400 spatial_dropout1d_9[0][0]
__________________________________________________________________________________________________
conv1d_6 (Conv1D) (None, 297, 4) 6404 bidirectional_8[0][0]
__________________________________________________________________________________________________
global_average_pooling1d_6 (Glo (None, 4) 0 conv1d_6[0][0]
__________________________________________________________________________________________________
global_max_pooling1d_6 (GlobalM (None, 4) 0 conv1d_6[0][0]
__________________________________________________________________________________________________
global_average_pooling1d_7 (Glo (None, 400) 0 bidirectional_8[0][0]
__________________________________________________________________________________________________
concatenate_5 (Concatenate) (None, 408) 0 global_average_pooling1d_6[0][0]
global_max_pooling1d_6[0][0]
global_average_pooling1d_7[0][0]
__________________________________________________________________________________________________
dense_5 (Dense) (None, 6) 2454 concatenate_5[0][0]
==================================================================================================
Total params: 363,258
Trainable params: 363,258
Non-trainable params: 0
以及图的结构: