我正在尝试执行一个情感分类任务,为此我使用了基于注意力的架构,该架构同时具有卷积层和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)
发布于 2020-11-20 10:27:33
看起来您已经定义了一个maxSeq长度,并且您说您正在用零填充序列。mask_zero还意味着其他一些东西,具体地说,0是您不应该使用的保留输入字索引,它是为程序内部保留的,用于标记可变长度序列的结束。
我认为解决方案是简单地删除参数mask_zero=True
,因为它是不需要的(因为它用于可变长度的序列),并使用零作为填充单词索引。
https://stackoverflow.com/questions/62816517
复制相似问题