Tensorflow tf.keras.layers.Conv1D是否支持RaggedSensor输入?

Tensorflow tf.keras.layers.Conv1D是否支持RaggedSensor输入?,tensorflow,conv-neural-network,ragged,Tensorflow,Conv Neural Network,Ragged,在tensorflow conv1D层文档中,它说: '将此层用作模型中的第一层时,请提供 输入_形状参数(整数元组或无元组,例如(10,128)用于 128维向量的10个向量的序列,或 128维向量的可变长度序列。” 所以我知道我们可以输入可变长度序列,但当我对conv1D层使用不规则张量输入时,它会给我一个错误: ValueError:Layer conv1d不支持将碎布传感器作为输入 如果不是粗糙的传感器,可变长度序列的真正含义是什么 谢谢,在这里为社区提供答案,即使答案已经出现在评论部分

在tensorflow conv1D层文档中,它说:

'将此层用作模型中的第一层时,请提供 输入_形状参数(整数元组或无元组,例如(10,128)用于 128维向量的10个向量的序列,或 128维向量的可变长度序列。”

所以我知道我们可以输入可变长度序列,但当我对conv1D层使用不规则张量输入时,它会给我一个错误:

ValueError:Layer conv1d不支持将碎布传感器作为输入

如果不是粗糙的传感器,可变长度序列的真正含义是什么


谢谢,

在这里为社区提供答案,即使答案已经出现在评论部分

tf.keras.layers.Conv1D
不支持参差不齐的张量,您可以使用
tf.keras.preprocessing.sequence.pad_sequences
填充序列,并将其用作Conv1D层的输入

下面是填充顺序的示例

sequence = [[1], [2, 3], [4, 5, 6]]
tf.keras.preprocessing.sequence.pad_sequences(sequence)
数组([[0,0,1],[0,2,3],[4,5,6]],dtype=int32)

您还可以执行固定长度填充、更改填充值以及按如下方式发布填充:

sequence = [[1], [2, 3], [4, 5, 6]]
tf.keras.preprocessing.sequence.pad_sequences(sequence,maxlen=2,value=-1,padding="post")  
数组([[1,-1],[2,3],[5,6]],dtype=int32)


起初我认为也许你可以有一个层之前,它会考虑到这一点,但就我所能看到的卷积层不支持掩蔽(这是指RNN主要)。我认为这在文档中的意思是,在序列长度维度中可以有不同大小的批。例如,在数据集中,每次都可以返回具有不同形状的批。关于不规则张量,它们似乎不受支持,因此您最好将其转换为常规张量。您可以稍后使用如果您保存并将结果传递给,请将我返回到ragged。感谢您的建议,我填充了ragged张量,它起了作用。但性能显著下降…您的意思是什么?我以为您以前无法运行它。性能下降与什么有关?conv1D层不接受ragged张量作为输入,所以我有首先使用tf.keras.preprocessing.sequence.pad_sequences()填充它,现在它开始工作了。很抱歉,我的意思是,现在需要更长的时间。你能看看这里吗?