sequence_softmax

    注解

    该OP的输入只能是LoDTensor,如果要处理的输入是Tensor类型,请使用 softmax

    该OP根据LoD信息将输入的第0维度进行划分,在划分的每一个区间内部进行运算。

    对第i个区间内的元素的计算公式如下:

    输入Tensor的维度可为

    或者

    sequence_softmax - 图3

    ,推荐使用

    例如,对有6个样本的batch,每个样本的长度为3,2,4,1,2,3,其lod信息为[[0, 3, 5, 9, 10, 12, 15]],根据lod信息将第0维度划分为6份,在 X[0:3,:],X[3:5,:],X[5:9,:],X[9:10,:],X[10:12,:],X[12:15,:]X[0:3,:],X[3:5,:],X[5:9,:],X[9:10,:],X[10:12,:],X[12:15,:] 中进行softmax运算。

    • input (Variable) - 维度为 [N,1][N,1] 或者 [N][N] 的LoDTensor,推荐使用 [N][N] 。支持的数据类型:float32,float64。

    • use_cudnn (bool,可选) - 是否用cudnn核,仅当安装cudnn版本的paddle库且使用gpu训练或推理的时候生效。支持的数据类型:bool型。默认值为False。

    • name (str,可选) – 具体用法请参见 ,一般无需设置,默认值为None。

    返回:根据区间计算softmax之后的LoDTensor,其维度与input的维度一致,数据类型与input的数据类型一致。

    返回类型:Variable

    代码示例

    1. x = fluid.data(name='x', shape=[7, 1],
    2. x_sequence_softmax = fluid.layers.sequence_softmax(input=x)
    3. dtype='float32', lod_level=1)
    4. y_sequence_softmax = fluid.layers.sequence_softmax(input=y)