我正在尝试训练 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 个子模型:
- 使用 CNN 模型处理图像。
- 使用其他模型(RNN、ANN、CNN 或单热编码词等)处理文本。 CNN 我的意思通常是一个 1D CNN,它会遍历句子中的单词。
- 合并 2 个潜在空间,这两个潜在空间提供有关图像和文本的信息。
- 运行最后几个 Dense 层进行分类。
关于python - 凯拉斯CNN : Add text as additional input besides image to CNN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51696575/