如何为每个批次更改嵌入层中的输入长度?

时间:2019-03-10 07:02:38

标签: keras

我正在设计一个词汇表层约为4000的嵌入层,大多数训练示例的长度都小于10。但是有些示例的长度为100甚至可能是数百,所以我想避免零填充每个示例长度为100+,以便在所有示例中保持恒定的输入长度。

为了解决这个问题,我只想基于批次内的最大长度填充,这样几乎所有批次的输入长度都只有〜10,只有少数批次具有很多填充。如何在每个批次中以不同的输入长度将其加载到嵌入层?

1 个答案:

答案 0 :(得分:0)

一种可能的方法是将input_length参数设置为None。但是,如果要在此层之后使用“密集”和“展平”层,则它们可能不起作用。要了解更多信息,请访问keras doc page

  

...这个参数是   如果要连接展平然后密集层,则需要   上游(没有它,密集输出的形状不能是   计算)

model = keras.models.Sequential(
    [
      keras.layers.Embedding(voc_size, embedding_dim, input_length=None)
    ]
)

现在模型可以接受可变长度的序列了。