【问题标题】:TensorFlow Training model on image and text features, with multi class outputs基于图像和文本特征的 TensorFlow 训练模型,具有多类输出
【发布时间】:2019-01-15 06:23:09
【问题描述】:
我有一个包含图像和文本特征的数据集。训练数据的标签是一个二维数组,与输入图像的形状相同,为 1s/0s。
所以基本上,训练输入是:
- 输入形状为
(X,Y)的图片,
- 形状为
(Z,)的附加特征集(即文本特征)。
训练标签的形状为(X,Y)。
我正在尝试在此数据上使用 Tensorflow/Keras 训练模型。我知道我可以训练一个输入大小为 (X* Y) + Z 的模型,但我读到这不是处理混合图像/附加数据特征的最佳方法。
所以我的问题是:
1) 我将如何设置我的模型来处理混合输入类型?
2) 由于我的输出与我的图像大小相同,我需要定义一个(X * Y) 大小的输出层吗?我将如何指定输出层以便它可以采用多个值,即输出中的任何/多个位置可以是 1 或 0?
【问题讨论】:
标签:
python
tensorflow
machine-learning
keras
【解决方案1】:
一种方法是定义两个独立的子模型来处理文本和图像数据,然后合并这些子模型的输出以创建最终模型:
--------------- ---------------
- 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 -
-----------
每个框对应一个或多个层,您可能有不同的方法来实现它们并设置它们的参数,尽管我在每个框中都提到了一些建议。