2017-06-18 59 views
1

我正在训练CNN。我的输入是一个图像和一些元数据。我想训练一个仅在卷积阶段查看图像的CNN,然后使用卷积阶段的输出和最终密集层中的元数据。Keras - 在顺序模型的后期使用部分输入

metadata ----------------- 
          |-> dense -> output 
image -> Convolutions - 

我该如何与凯拉斯做到这一点?我可以提供非矩形形状的输入吗?

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

我发现this issue似乎相关,但我没有得到他们如何拆分输入和合并第二部分与中间输出后。

回答

1

您需要将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]) 

希望这有助于!

+0

谢谢,我由于没有使用功能API而陷入困境。 – Guig