首页 > 解决方案 > 在每个批量大小中使用自定义填充训练 LSTM

问题描述

我正在训练用于文本分类的 RNN。我想用批量大小训练模型X。但是,对于每个批次,我想创建一个零填充 where word_padding_length = maximum string length in each batch - current_word_length。我尝试过搜索,但找不到与此相关的任何内容。这应该在我拟合模型时发生。

标签: keraslstmword-embeddingzero-padding

解决方案


您不能在训练过程中更改输入张量形状。在您的情况下,您希望拥有:
(batch_size, len1, num_features) -> (batch_size, len2, num_features)对于每个步骤。

你可以有类似的东西:

from keras.models import Model
from keras.layers import Input, LSTM

x = Input(shape=(None,128))
hidden = LSTM(32)(x)
model = Model(x, hidden)

for batch in batch_lst:
     model.train_on_batch(batch)

注意到它Input的形状为 ( None , 128),这意味着变量 batch_size、变量 time_steps 和固定 num_feature=128

此外,您可以考虑使用掩码层来忽略所有填充值,这样您就可以为整个训练集提供一个张量输入,而模型性能不受填充影响。


推荐阅读