Python 如何处理MLP中keras中的可变长度序列?

Python 如何处理MLP中keras中的可变长度序列?,python,arrays,keras,deep-learning,Python,Arrays,Keras,Deep Learning,我正在使用Keras实现我的MLP神经网络架构 假设我的架构输入了_shape=(5000,8),其中第7列和第8列是简单整数(正),但问题在于这6列。我想给我的模型一个长度可变的numpy数组,在这5000个数组中的每一个数组后面加上padding value=0(直到5000为止,每行6列),使长度固定为6。我希望这些“0”值是不可训练的,也就是说,我希望我的模型不要从这些“0”(填充)值中学习 输入示例: 具有8列(0到5为我的数组,6到7为简单的正整数)的pandas dataframe

我正在使用Keras实现我的MLP神经网络架构

假设我的架构输入了_shape=(5000,8),其中第7列和第8列是简单整数(正),但问题在于这6列。我想给我的模型一个长度可变的numpy数组,在这5000个数组中的每一个数组后面加上padding value=0(直到5000为止,每行6列),使长度固定为6。我希望这些“0”值是不可训练的,也就是说,我希望我的模型不要从这些“0”(填充)值中学习

输入示例: 具有8列(0到5为我的数组,6到7为简单的正整数)的pandas dataframe使第一行如下所示:

[36,45,22,2,0,0,1,7],其中您在该数组中看到的这两个“0”值仅用于填充目的,而实际数组仍为[36,45,22,2]

我已阅读了以下堆栈溢出问题:

其中一个答案向我展示了“keras中的填充和掩蔽”示例,如下所示:

在这种方法中,我们用一个要屏蔽(跳过)的特殊值填充较短的序列。例如,假设每个时间戳都有维度2,-10是特殊值,那么

    X = [

      [[1,    1.1],
       [0.9, 0.95]],  # sequence 1 (2 timestamps)

      [[2,    2.2],
       [1.9, 1.95],
       [1.8, 1.85]],  # sequence 2 (3 timestamps)

    ]

    will be converted to

    X2 = [

      [[1,    1.1],
       [0.9, 0.95],
       [-10, -10]], # padded sequence 1 (3 timestamps)

      [[2,    2.2],
       [1.9, 1.95],
       [1.8, 1.85]], # sequence 2 (3 timestamps)
    ]
正如您所看到的,这个答案显示了整行的填充意味着[-10,-10]已被添加为新行,仅用于填充数组X2,但我希望在与上面示例相同的行中填充0值


我如何在这种情况下使用Keras的掩蔽层,以避免让我的模型从这些填充的无关值中学习?非常感谢您的帮助。

在保存培训数据(作为HDF5文件中的另一个数据列)时,您是否考虑过创建和存储屏蔽阵列?这样,您只需进行一次测试,而不必在Keras中再次进行测试。只要抓取数据和面具。在您的例子中,序列1将有4个True和2个False,序列1将有6个True。或者,您可以保存一个字段/列,告诉要屏蔽的值的数量(假设您总是从末尾开始计数)。在保存训练数据时(作为HDF5文件中的另一个数据列),您是否考虑过创建和存储屏蔽数组?这样,您只需进行一次测试,而不必在Keras中再次进行测试。只要抓取数据和面具。在您的例子中,序列1将有4个True和2个False,序列1将有6个True。或者,您可以保存一个字段/列,告诉要屏蔽的值的数量(假设您总是从末尾开始计数)。