Keras 如何将遮罩值输入到卷积1D层

Keras 如何将遮罩值输入到卷积1D层,keras,convolution,masking,Keras,Convolution,Masking,我需要将可变长度的序列输入到我的模型中 我的模型是embedded+LSTM+Conv1d+Maxpooling+softmax 当我在Embedding中设置mask\u zero=True时,我无法在Conv1d处编译 如何在Conv1d中输入掩码值,或者是否有其他解决方案?Conv1d层目前不支持掩码。这是一份关于keras回购协议的报告 根据任务的不同,您可能可以像嵌入序列中的其他值一样嵌入mask\u值,并应用全局池(正如您现在所做的那样)。掩蔽层要求每个下游层都支持掩蔽,而Conv1

我需要将可变长度的序列输入到我的模型中

我的模型是
embedded+LSTM+Conv1d+Maxpooling+softmax

当我在
Embedding
中设置
mask\u zero=True
时,我无法在
Conv1d
处编译


如何在
Conv1d
中输入掩码值,或者是否有其他解决方案?

Conv1d层目前不支持掩码。这是一份关于keras回购协议的报告


根据任务的不同,您可能可以像嵌入序列中的其他值一样嵌入
mask\u值
,并应用全局池(正如您现在所做的那样)。

掩蔽层要求每个下游层都支持掩蔽,而
Conv1D
层则不是这样。幸运的是,还有另一种应用掩蔽的方法,即使用函数API:

inputs=输入(…)

mask=Masking().compute_mask(inputs)#如果LSTM在卷积层和maxpooling层之后,它会编译吗?@convolutionBoy如果LSTM在Conv之后,它仍然失败,我在github中发现了这个问题,除了RNN和Timedistributed层,其他都不能支持maskThanks来回答。在您的解决方案中,我删除mask_value=True,并给padding一个嵌入向量,当maxpooling之后,padding timestep将在训练期间逐渐被忽略。你是那个意思吗?或者github问题中的解决方案,我插入一个张量[1,1,1,0,0],其中0表示pad,我将这个张量与conv输出混合,然后输入到maxpooling层?你认为这个解决方案怎么样我不清楚它是如何工作的。你能提供代码示例吗?谢谢。如果我理解正确,如果数据类型是整数(例如,如果输入是要嵌入的单词或字符),则此解决方案有效。是否有一种方法可以处理浮点数据(例如,如果输入是某些物理数据的某个数据系列?),其中嵌入不合适?如果您尝试了,但无法处理浮点数据,那么最后一种方法是编写您自己的自定义层:为您的CustomLayer(keras.layers.Layer)分类:。。。def调用(自身、输入、掩码):。。。