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:
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
import paddle.fluid as fluid
avg_x = fluid.layers.sequence_pool(input=x, pool_type='average')
sum_x = fluid.layers.sequence_pool(input=x, pool_type='sum')
max_x = fluid.layers.sequence_pool(input=x, pool_type='max')
last_x = fluid.layers.sequence_pool(input=x, pool_type='last')
first_x = fluid.layers.sequence_pool(input=x, pool_type='first')