【问题标题】:Masking Layer leads for error InvalidArgumentError: Incompatible shapes: [128,0] vs. [128,6] in Keras掩蔽层导致错误 InvalidArgumentError:不兼容的形状:Keras 中的 [128,0] 与 [128,6]
【发布时间】:2020-04-07 06:50:52
【问题描述】:

我的模型如下。

model = Sequential()
model.add(Embedding(input_dim=wordEmbeddings.shape[0]+2, output_dim=wordEmbeddings.shape[1], input_length=n_in,  trainable=False))       
model.add(Masking(mask_value=0.))
model.add(Bidirectional(LSTM(200, return_sequences=True, recurrent_dropout=0.5, dropout=0.5, name='bilstm1')))
model.add(TimeDistributed(Dense(100, activation="relu")))
crf = CRF(n_out,sparse_target=True)
model.add(crf)

模型摘要

当我在没有遮罩层的情况下使用这个模型时,这个模型工作得很好。但损失是负数。因此,作为解决方案,我尝试添加掩码,然后出现此错误提示

块引用

【问题讨论】:

    标签: keras recurrent-neural-network masking named-entity-recognition crf


    【解决方案1】:

    根据您的描述,第一件事是您应该使用 input_dim=wordEmbeddings.shape[0]+1 而不是 +2,在文档中说您应该使用 max_index + 2,但 max_index = shape[0] - 1 ,所以你应该使用 +1 而不是 +2。然后您只需将所有 0 传递给 wordEmbeddings 权重的第一行,并将您的预训练嵌入传递给其余部分。

    【讨论】:

    • 我也试过了。但是没有用。还有其他建议吗?当我预测测试数据时,我得到了很好的结果,即使损失是负的。我还需要使损失为正数吗?
    • 损失可以是负数,这不是问题,尤其是概率层,损失可以是e.g.负对数概率。我建议您制作一个玩具数据集示例,并提供一个我可以复制的示例。在您提供的代码中,也缺少编译部分,所以请提供一个可运行的示例。
    • 非常感谢我会检查的。
    猜你喜欢
    • 1970-01-01
    • 2019-02-14
    • 2021-03-07
    • 2020-10-24
    • 2021-12-31
    • 2021-09-18
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多