python - 凯拉斯CNN : Add text as additional input besides image to CNN

标签 python tensorflow keras conv-neural-network

我正在尝试训练 CNN 进行对象分类。因此,除了图像之外,我还想输入一些文本特征。

我在这里找到了一个这样做的例子 http://cbonnett.github.io/Insight.html

作者构建了两个模型,一个用于图像识别的 CNN 和一个用于文本的普通 ANN。最后,他将它们合并在一起并应用 softmax 激活。因此,他的管道如下所示:

merged = Merge([cnn_model, text_model], mode='concat')

### final_model takes the combined models and adds a sofmax classifier to it
final_model = Sequential()
final_model.add(merged)
final_model.add(Dropout(do))
final_model.add(Dense(n_classes, activation='softmax'))

我想知道这是否是组合图像 + 文本的首选方法,或者是否有使用 Keras 解决此类任务的替代方法?换句话说,是否有可能(甚至有意义)将文本作为直接输入到 CNN,以便 CNN 处理图像和文本?

最佳答案

您在正确的轨道上,但是是的,您也可以使用 CNN 来处理文本,它通常是使用 RNN 等更快的替代方案。但是 您不能使用相同的 CNN 来处理文本和图像,它们一定是不同的,因为文本是一维的,图像是二维输入的,更不用说它们来自不同的源分布。所以,如果你愿意,你仍然会得到 2 个子模型:

  1. 使用 CNN 模型处理图像。
  2. 使用其他模型(RNN、ANN、CNN 或单热编码词等)处理文本。 CNN 我的意思通常是一个 1D CNN,它会遍历句子中的单词。
  3. 合并 2 个潜在空间,这两个潜在空间提供有关图像和文本的信息。
  4. 运行最后几个 Dense 层进行分类。

关于python - 凯拉斯CNN : Add text as additional input besides image to CNN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51696575/

相关文章:

python - 编译前在运行时预处理函数文本

python - 使用Dataset API和Keras编写summary.scalar

python - 您怎么知道dnn支持的图层?

python - 神经网络分类

python - 直接在函数中更改对象在Python中是反模式吗?

python - 如何将 textmate 指向我在命令行获得的相同版本的 python

machine-learning - 我们能否在使用 CNN 时明确指定从图像中提取哪些特征

python - 恢复已保存的 Tensorflow .pb 模型的权重

python - 如何使用 keras 将数组 reshape 为 3d

javascript - 如何创建多选以显示 Django 中每个选定内容的详细信息?