在每个批量大小中使用自定义填充训练 LSTM
Train LSTM with custom padding in each batch size
我正在训练用于文本分类的 RNN。我想训练批量大小 X
的模型。但是,对于每个批次,我想在 word_padding_length = maximum string length in each batch - current_word_length
处创建一个零填充。我试过搜索但找不到与此相关的任何内容。这应该发生在我拟合模型的时候。
你不能在训练过程中改变输入张量的形状。在你的情况下,你想要:
(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),这意味着 variable batch_size, variable time_steps,并固定 num_feature=128
此外,您可以考虑使用 masking layer 忽略所有填充值,这样您就可以为整个训练集输入一个张量,而模型性能不受填充影响。
我正在训练用于文本分类的 RNN。我想训练批量大小 X
的模型。但是,对于每个批次,我想在 word_padding_length = maximum string length in each batch - current_word_length
处创建一个零填充。我试过搜索但找不到与此相关的任何内容。这应该发生在我拟合模型的时候。
你不能在训练过程中改变输入张量的形状。在你的情况下,你想要:
(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),这意味着 variable batch_size, variable time_steps,并固定 num_feature=128
此外,您可以考虑使用 masking layer 忽略所有填充值,这样您就可以为整个训练集输入一个张量,而模型性能不受填充影响。