我正在设计一个嵌入层,其中词汇量约为 4000,并且大多数训练示例的长度小于 10。但是有些示例的长度为 100 甚至可能是几百,我想避免每个示例都填充零长度为 100+,以便在所有示例中保持恒定的输入长度。
为了解决这个问题,我只想根据批次中的最大长度进行填充,这样几乎所有批次的输入长度都只有~10,只有少数批次有很多填充。如何将具有不同输入长度的每个批次加载到嵌入层中?
我正在设计一个嵌入层,其中词汇量约为 4000,并且大多数训练示例的长度小于 10。但是有些示例的长度为 100 甚至可能是几百,我想避免每个示例都填充零长度为 100+,以便在所有示例中保持恒定的输入长度。
为了解决这个问题,我只想根据批次中的最大长度进行填充,这样几乎所有批次的输入长度都只有~10,只有少数批次有很多填充。如何将具有不同输入长度的每个批次加载到嵌入层中?
一种可能的方法是将 input_length 参数设置为 None。但是,如果您要在该层之后使用 Dense 和 Flatten 层,它们可能不起作用。有关更多信息,请访问keras 文档页面
...如果您要在上游连接 Flatten 然后 Dense 层,则需要此参数(没有它,无法计算密集输出的形状)
model = keras.models.Sequential(
[
keras.layers.Embedding(voc_size, embedding_dim, input_length=None)
]
)
现在模型可以接受可变长度序列。