我有一个数据集,其中包含图像和文本特征。训练数据的标签是一个二维数组,与输入图像的形状相同,由1和0组成。
因此,训练输入包括:
- 形状为
(X,Y)
的输入图像, - 形状为
(Z,)
的附加特征集(即文本特征)。
训练标签的形状为(X,Y)
。
我正在尝试使用TensorFlow/Keras在这个数据上训练模型。我知道可以训练一个输入大小为(X* Y) + Z
的模型,但我读到这不是处理混合图像/附加数据特征的最佳方式。
所以我的问题是:
1) 如何设置我的模型来处理这些混合输入类型?
2) 由于我的输出与图像大小相同,我是否需要定义一个大小为(X * Y)
的输出层?我该如何指定输出层,使其能够接受多个值,即输出中的任何/多个位置可以是1或0?
回答:
一种方法是定义两个独立的子模型来处理文本和图像数据,然后合并这些子模型的输出以创建最终模型:
--------------- ---------------- Input Image - - Input Text ---------------- --------------- | | | | | |--------------- --------------------- - Image Model - - Text Model -- (e.g. CNNs) - - (e.g. Embeddings, ---------------- - LSTM, Conv1D) - \ --------------------- \ / \ / \ / \ / \ / \ / \ / \ / ---------------------- - Merge - - (e.g. concatenate) - ---------------------- | | | ---------------------- - Upsample - - (e.g. Dense layer, - - transpose-conv) - ---------------------- | | | ----------- - Output - -----------
每个方框对应一个或多个层,你可能有不同的方式来实现它们并设置它们的参数,尽管我在每个方框中提到了一些建议。