【发布时间】:2018-10-10 22:51:28
【问题描述】:
我目前正在开发一个系统,该系统可以对两个句子是否共享相同的内容进行分类。为此,我使用预训练的词向量,因此有一个包含句子 1 (s1) 的词向量的数组和一个包含句子 2 (s2) 的词向量的数组。为了分类它们是否相似,我通过将 s1 中的所有向量与 s2 中的向量成对比较来创建一个矩阵。然后将该矩阵输入 CNN 分类器并在数据上进行训练。这一切都很简单。
现在我想通过在 s1 和 s2 上使用双向 LSTM 来增强这个系统。应该使用双向 LSTM 来获得 s1 和 s2 中每个向量的隐藏状态,然后应该通过成对余弦相似度以与之前比较 s1 和 s2 的向量相同的方式比较这些隐藏状态。这是为了捕获s1和s2中每个单词的句子上下文信息。
现在的问题是如何在 Keras 中做到这一点。目前我正在使用 numpy/sklearn 创建矩阵,然后将这些矩阵作为训练数据输入 Keras。 我在普通的 tensorflow (https://github.com/LiuHuiwen/Pairwise-Word-Interaction-Modeling-by-Tensorflow-1.0/blob/master/model.py) 中找到了我想要做的事情的一种实现。
我假设我必须将输入数据更改为仅包含 s1 和 s2 的两个向量数组。然后我必须首先运行 biLSTM,获取隐藏状态,将所有内容转换为矩阵并将其输入 CNN。简单 tensorflow 中的示例对我来说似乎很清楚,但我无法想出如何在 Keras 中执行此操作。在 Keras 中是否有可能,还是必须直接求助于 tensorflow 才能对 biLSTM 的输出进行必要的计算?
【问题讨论】:
标签: python tensorflow keras deep-learning lstm