【发布时间】:2018-10-14 10:32:30
【问题描述】:
我有两个嵌入层,一个分配了mask_zero=True,另一个没有,定义如下。
a = Input(shape=[30])
b = Input(shape=[30])
emb_a = Embedding(10, 5, mask_zero=True)(a)
emb_b = Embedding(20, 5, mask_zero=False)(b)
cat = Concatenate(axis=1)([emb_a, emb_b]) # problem here
model = Model(inputs=[a, b], outputs=[cat])
当我尝试将它们连接到 axis=1 时,我期望输出大小为 [None, 60, 5],但它引发了错误:
ValueError: Dimension 0 in both shapes must be equal, but are 1 and 5.
Shapes are [1] and [5]. for 'concatenate_1/concat_1' (op: 'ConcatV2') with input shapes:
[?,30,1], [?,30,5], [] and with computed input tensors: input[2] = <1>.
为什么emb_a的形状变成[None, 30, 1]?为什么还有一个空张量[]被输入到Concatenate中?
如果两个嵌入层都分配mask_zero=True 或都分配mask_zero=False,则不会引发此错误。
如果它们在axis=2 处连接,也不会引发此错误。
我的keras版本是2.0.8。
谢谢。
【问题讨论】:
标签: python keras embedding masking