sequence_pool

    注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用pool2d函数(fluid.layers. pool2d )。

    该OP 仅支持LoDTensor类型的输入 ,将对输入的LoDTensor进行指定方式的池化(pooling)操作。通过指定pool_type参数,将输入的每个序列(sequence)在最后一层lod_level上或时间步(time-step)上对特征进行诸如sum、average、sqrt等池化操作。

    支持六种pool_type:

    • average:

    • sum:

    • sqrt:

      sequence_pool - 图3

    • max: Out[i]\=max(Xi)Out[i]\=max(Xi)

    • last: Out[i]\=XN_iOut[i]\=XN_i

    • first: Out[i]\=X0Out[i]\=X0

    其中 N_i 为待池化第i个输入序列的长度。

    • pool_type (str) - 池化类型,支持average,sum,sqrt,max,last和first池化操作。

    • is_test (bool) - 仅在pool_type取值为max时生效。当is_test为False时,则在池化操作过程中会创建maxIndex临时Tenosr,以记录最大特征值对应的索引信息,用于训练阶段的反向梯度计算。默认为False。

    • pad_value (float) - 用于填充输入序列为空时的池化结果,默认为0.0。

    返回:经过指定类型池化后的LoDTensor,数据类型为float32。

    返回类型:Variable

    1. import paddle.fluid as fluid
    2. avg_x = fluid.layers.sequence_pool(input=x, pool_type='average')
    3. sum_x = fluid.layers.sequence_pool(input=x, pool_type='sum')
    4. max_x = fluid.layers.sequence_pool(input=x, pool_type='max')
    5. last_x = fluid.layers.sequence_pool(input=x, pool_type='last')
    6. first_x = fluid.layers.sequence_pool(input=x, pool_type='first')