训练LSTM,并在每个批次中使用自定义填充

问题描述 投票:0回答:1

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

keras lstm word-embedding zero-padding
1个回答
0
投票

您不能在训练过程中更改输入张量形状。您的情况是:每个步骤(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)的形状,这意味着可变批处理大小,可变时间步长和固定num_feature = 128

此外,您可能考虑使用masking layer忽略所有填充值,以便在整个模型集不受填充影响的情况下,可以为整个训练集使用一个张量输入。

© www.soinside.com 2019 - 2024. All rights reserved.