Keras - 在序列模型的后期使用部分输入

Gui*_*uig 7 neural-network conv-neural-network keras

我正在训练一个 CNN。我的输入是一张图片和一些元数据。我想训练一个只在卷积阶段查看图像的 CNN,然后使用卷积阶段的输出和最终密集层中的元数据。

metadata -----------------
                          |-> dense -> output
image    -> Convolutions -
Run Code Online (Sandbox Code Playgroud)

我怎样才能用 Keras 做到这一点?我可以输入非矩形的输入吗?

例如,如果图像是(255, 255, 3)和元数据,(10)这将如何工作?

我发现这个问题似乎相关,但我不明白他们如何分割输入并稍后将第二部分与中间输出合并。

Mic*_*tti 8

您需要将Functional API与多输入模型一起使用。

一个例子可能是:

from keras.layers import Input, Conv1D, Dense, concatenate
#Image data
conv_input = Input(shape=conv_input_shape)
conv_output = Conv1D(nfilters,kernel_shape)(conv_input)

#Metadata
metadata_input = Input(shape=metadata_shape)

#Merge and add dense layer
merge_layer = concatenate([metadata_input, conv_output])
main_output = Dense(dense_size)(merge_layer)

# Define model with two inputs
model = Model(inputs=[conv_input, metadata_input], outputs=[main_output])
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!