美文网首页
文本处理的padding

文本处理的padding

作者: 我喜欢过洋娃娃 | 来源:发表于2018-07-24 19:18 被阅读0次

    torchtext 可以选择将每个batch的sentences padding成同一个长度进行计算,除了运行速度和简便,我在想是不是有算法要求必须padding.
    也有一些算法是要把所有的句子都padding成一个长度。

    CNN

    比较常用的方法是 Yoon Kim的方法,每个句子经过卷积层之后得到的其实是不同的kernel卷积的结果(根据kernel大小不同,卷积结果也长短不一),然后pooling。因为pooling不受限于输入的size大小,所以这里不同的batch可以用不同的pooling,并且pooling出来的size也是相同的。

    在batch处理的时候,每个batch一起计算,为了保证kernel卷积出来的长度相等,所以每个batch padding成一个长度几乎是必需的

    LSTM

    LSTM是将句子中的词逐个输入LSTM神经元,那么hidden state的维度,其实是人为指定的。
    (句子的长度不影响句子的embedding的长度)
    在batch处理的时候,每个batch一起计算,那么padding成一个长度会简化计算。(或者说,如果按照batch的循环,每个句子同时处理,那么为了保证输入神经元的次数是一样的,那么每个batch padding成一个长度几乎也是必需的。

    Attention

    Attention在算相似度矩阵时,如果按照batch计算,是一定要padding的,因为这个Layer对每个pair产生一个矩阵,如果一个batch中的矩阵中的大小不一,那么对相似度矩阵的操作也将各不相同。

    所以每个batch要padding成同一个长度。
    那么是否要统一一下每个batch padding的长度呢?
    这就取决于对相似度矩阵的操作是否可以无视相似度矩阵的大小。
    比如,decomposable attention是利用相似度矩阵做加权平均,再和对应的词concat起来,
    并且在最后每个句子求和,得到了一个向量,这个向量的维度其实是词向量的2倍,与任何句长都无关,那么这里每个batch 内部padding就可以了。

    相关文章

      网友评论

          本文标题:文本处理的padding

          本文链接:https://www.haomeiwen.com/subject/rwvymftx.html