【问题标题】:Train LSTM with custom padding in each batch size在每个批量大小中使用自定义填充训练 LSTM
【发布时间】:2020-01-29 06:30:29
【问题描述】:

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

【问题讨论】:

    标签: keras lstm word-embedding zero-padding


    【解决方案1】:

    您不能在训练过程中更改输入张量形状。在您的情况下,您希望每个步骤都有:
    (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 固定

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 2019-03-22
      • 2020-04-04
      • 2016-11-13
      • 2017-08-15
      • 1970-01-01
      相关资源
      最近更新 更多