Keras CNN:除了将图像添加到CNN

时间:2018-08-05 17:16:50

标签: 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既可以处理图像也可以处理文本?

2 个答案:

答案 0 :(得分:3)

您处在正确的轨道上,但是可以,您也可以使用CNN来处理文本,它通常是使用RNN等的更快的选择。但是您不能使用同一CNN来处理文本和图像,它们必须有所不同,因为文本是1D输入,图像是2D输入,更不用说它们源自单独的源代码分布。因此,如果您愿意,最终还是会得到2个子模型:

  1. 使用CNN模型处理图像。
  2. 使用其他模型(RNN,ANN,CNN或仅一个热编码词等)处理文本。 CNN通常是指一维CNN,它遍历句子中的单词。
  3. 合并两个隐性空间,以告知有关图像和文本的信息。
  4. 运行最后几个密集层进行分类。

答案 1 :(得分:2)

让我这样解释。您首先要做卷积,然后聚合的数据进入神经网络。与使用一种卷积不同,您有两种卷积,一种用于文本,另一种用于图像。唯一的附加步骤是在平整卷积结果之后,将两条信息连接起来。我建议您在此链接上查看我的代码。这段代码是关于在标题和描述上使用CNN并将它们连接在一起的。与您的情况相似,您将文本数据作为我的“描述”,将图像数据作为我的“标题”。

https://www.kaggle.com/jingqliu/fasttext-conv2d-with-tf-on-title-and-description

它是用张量流编写的,但是我相信你会明白的!

相关问题