【问题标题】:How to use masking with Convolution1D layer in keras?如何在 keras 中使用带有 Convolution1D 层的遮罩?
【发布时间】:2020-07-09 13:55:41
【问题描述】:

我正在尝试执行情感分类任务,我正在使用基于注意力的架构,该架构同时具有卷积层和 BiLSTM 层。我的模型的第一层是一个嵌入层,然后是一个 Convolution1D 层。我使用mask_zero=True 作为嵌入层,因为我已经用零填充了序列。然而,这会为 Convolution1D 层创建一个错误,因为该层不支持遮罩。但是,我确实需要屏蔽零输入,因为我在卷积层之后有 LSTM 层。有没有人对此有任何解决方案。我已经附上了我的模型的示例代码,直到 Convolution1D 层供参考。

wordsInputs = Input(shape=(maxSeq,), name='words_input')
embed_reg = l2(l=0.001)
emb = Embedding(vocabSize, 300, mask_zero=True, init='glorot_uniform', W_regularizer=embed_reg)(wordsInputs)
convOutput = Convolution1D(nb_filter=100, filter_length=3, activation='relu', border_mode='same')(emb)

【问题讨论】:

    标签: keras deep-learning nlp convolution word-embedding


    【解决方案1】:

    看起来您已经定义了一个 maxSeq 长度,并且您说您正在用零填充序列。 mask_zero 意味着别的东西,特别是零是一个保留的输入字索引,您不应该使用它,它是为程序内部保留的,以标记可变长度序列的结束。

    我认为解决方案只是删除参数mask_zero=True,因为它是不需要的(因为它用于可变长度序列),并使用零作为填充词索引。

    【讨论】:

      猜你喜欢
      • 2020-02-17
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 2020-09-11
      相关资源
      最近更新 更多