使用Dot Product在Keras中使用合并层

时间:2017-07-18 19:49:38

标签: merge deep-learning keras word-embedding

我正在尝试将两个图层合并在一起。我的输入或处理过的数据如下所示:

[[2069 2297 3087 ...,    0    0    0]
 [2069 2297 3087 ...,    0    0    0]
 [2069 2297 3087 ...,    0    0    0]
 ..., 
 [2711 4215  875 ...,    0    0    0]
 [5324 1412 1301 ...,    0    0    0]
 [5065 3561 5002 ...,    0    0    0]]

每行代表一个单词序列和每个#,一个单词的特定索引。我有两个这样的数据,我试图将它们合并在一起,首先将它们嵌入到16维字向量中,然后使用点积。为此,我创建了两个分支来嵌入数据。然后我尝试合并它们。

当我尝试在Keras中使用此功能合并两者时:

model = Sequential()
model.add(Merge( [x1_branch, x2_branch], mode = 'dot'))

我收到以下错误:

ValueError: Error when checking target: expected merge_1 to have 3 dimensions, but got array with shape (162, 1)

我相信矩阵乘法的执行,正如文档中所描述和描述的那样:

"E.g. if applied to two tensors a and b of shape (batch_size, n), the output will be a tensor of shape  (batch_size, 1) where each entry i will be the dot product between a[i] and b[i]."

显然,此样本的批量大小为162.但是,错误仍然没有意义。如果合并层看起来已经完成了计算,它怎么能期望输入?

我非常感谢任何帮助。谢谢!

0 个答案:

没有答案