zoukankan      html  css  js  c++  java
  • Keras中RNN不定长输入的处理--padding and masking

    在使用RNN based model处理序列的应用中,如果使用并行运算batch sample,我们几乎一定会遇到变长序列的问题。

    通常解决变长的方法主要是将过长的序列截断,将过短序列用0补齐到一个固定长度(例如max_length)。

    最后由n个sample组成的dataset能形成一个shape == (n, max_length)的矩阵。然后可以将这个矩阵传递到后续的模型中使用。

    然而我们可以很明显,如果用0或者其他整数补齐,势必会影响到模型自身(莫名其妙被输入很多个0,显然是有问题的)。有什么方法能够做到“能够使用一个二维矩阵作为输入数据集,从而达到并行化的同时,还能让RNN模型自行决定真正输入其中的序列的长度”。

    Embedding提供mask_zero来进行对padding为0的处理。当我们构建一个Embedding Layer时,可以设置mask_zero=True

    encoder_inputs = Input(shape=(None,))
    encoder_embedded = Embedding(num_input_tokens, embedding_size, mask_zero=True)(encoder_inputs)

    更多阅读:Keras中关于Recurrent Network的Padding与Masking

  • 相关阅读:
    线程的补充
    线程
    进程
    操作系统和进程
    socketserver模块实现并发和连接合法性验证
    socketserver实例化过程
    粘包现象和解决方法
    网络通信协议
    初探网络
    Python网络编程
  • 原文地址:https://www.cnblogs.com/data2value/p/9336572.html
Copyright © 2011-2022 走看看