Nig*_* Ng 2 python numpy deep-learning keras
我有一个Keras模型定义如下:
model = Sequential()
model.add(embedding_layer)
model.add(Conv1D(filters=256, kernel_size=3, activation='relu', padding='same'))
model.add(MaxPooling1D(pool_size=3))
model.add(Flatten())
model.add(Dense(num_classes, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam')
Run Code Online (Sandbox Code Playgroud)
在Flatten()图层之后,我想连接2个附加功能,即如果Flatten()给我一个大小为(1,n)(model.output_shape == (None, n))的向量,我想连接一个单独numpy的大小数组(1,2)model.output_shape == (None, n+2).我该怎么做呢?
我认为这keras.layers.merge.Concatenate是我在这里寻找的,但我不知道如何实现它.在线的例子不多,Keras 2.0也使用了更新的语法.任何帮助,将不胜感激.
我玩了一下,想出来了.对于任何感兴趣的人:这是Keras功能API的一个很好的用例,它总是返回张量,你可以在其上进行张量操作.
embedded_sequence = embedding_layer(sequence_input)
x = Conv1D(filters=256, kernel_size=3, activation='relu', padding='same')(embedded_sequence)
x = MaxPooling1D(pool_size=3)(x)
x = Flatten()(x)
# additional features input
from keras.layers.merge import Concatenate
af_input = Input(shape=(data['af_train'].shape[1],), name='af_input')
x = Concatenate()([x, af_input])
# output
main_output = Dense(num_classes, activation='sigmoid', name='main_output')(x)
model = Model(inputs=[sequence_input, af_input], outputs=main_output)
model.compile(loss='binary_crossentropy', optimizer='adam')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4278 次 |
| 最近记录: |