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

Keras 如何为每个批次更改嵌入层中的输入长度?,keras,Keras,我正在设计一个嵌入层,其中词汇量约为4000,大多数培训示例的短长度小于10。然而,有些示例的长度是100,甚至可能是几百,为了在所有示例中保持恒定的输入长度,我希望避免将每个示例的长度填充为100+ 为了解决这个问题,我只想根据批中的最大长度填充,这样几乎所有批都只有输入长度~10,只有少数批有大量填充。如何将具有不同输入长度的每个批加载到嵌入层?一种可能的方法是将input\u length参数设置为None。但是,如果要在该层之后使用“密集”和“平坦”层,它们可能不起作用。更多访问 。。。

我正在设计一个嵌入层,其中词汇量约为4000,大多数培训示例的短长度小于10。然而,有些示例的长度是100,甚至可能是几百,为了在所有示例中保持恒定的输入长度,我希望避免将每个示例的长度填充为100+


为了解决这个问题,我只想根据批中的最大长度填充,这样几乎所有批都只有输入长度~10,只有少数批有大量填充。如何将具有不同输入长度的每个批加载到嵌入层?

一种可能的方法是将input\u length参数设置为None。但是,如果要在该层之后使用“密集”和“平坦”层,它们可能不起作用。更多访问

。。。这个论点是正确的 如果要连接扁平层和致密层,则需要此选项 上游(如果没有它,密集输出的形状就不可能 (计算)


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

可变输入能否仅在密集层(即不平坦)下工作?恐怕不行。当返回序列为False时,它甚至可能不适用于LSTM。您是否正在尝试进行批量培训?我想使用
fit\u generator
进行批量培训,但当模型包含嵌入层时,我不知道如何进行培训。当我不知道嵌入的参数(例如输入长度)时,我怎么能编译一个模型呢?
model = keras.models.Sequential(
    [
      keras.layers.Embedding(voc_size, embedding_dim, input_length=None)
    ]
)