关于图像和文本特征的TensorFlow培训模型,具有多类输出

时间:2018-08-08 05:11:40

标签: python tensorflow machine-learning keras

我有一个既包含图像又包含文本特征的数据集。训练数据的标签是一个二维数组,形状与输入图像相同,为1s / 0s。

因此,基本上,培训输入是:

  • 输入形状为(X,Y)的图像,
  • 形状为(Z,)的其他功能集(即文本功能)。

训练标签的形状为(X,Y)

我正在尝试使用Tensorflow / Keras在此数据上训练模型。我知道我可以训练输入大小为(X* Y) + Z的模型,但是我读到这不是处理图像/附加数据特征混合的最佳方法。

所以我的问题是:

1)我将如何设置模型以处理混合输入类型?

2)由于我的输出与图像大小相同,是否需要定义一个(X * Y)大小的输出层?我将如何指定输出层,使其可以采用多个值,即输出中的任何/多个位置可以为1或0?

1 个答案:

答案 0 :(得分:2)

一种方法是定义两个独立的子模型来处理文本和图像数据,然后合并这些子模型的输出以创建最终模型:

---------------        ---------------
- 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 -
                -----------

每个框对应一个或多个层,尽管我在每个框中都提到了一些建议,但您可能有不同的方法来实现它们并设置它们的参数。