sequence_softmax

查看属性与别名

API属性:声明式编程(静态图)专用API

paddle.fluid.layers.sequence_softmax ( input, use_cudnn=False, name=None ) [源代码]

注解

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

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

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

sequence_softmax - 图1

输入Tensor的维度可为

sequence_softmax - 图2

或者

sequence_softmax - 图3

,推荐使用

sequence_softmax - 图4

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

sequence_softmax - 图5

中进行softmax运算。

  1. 示例:
  2. 给定:
  3. input.data = [0.7, 1, 0.6,
  4. 1.5, 1.1,
  5. 1.2, 0.2, 0.6, 1.9,
  6. 3.1,
  7. 2.5, 0.8,
  8. 0.1, 2.4, 1.3]
  9. input.lod = [[0, 3, 5, 9, 10, 12, 15]]
  10. 则:
  11. output.data = [0.30724832, 0.41474187, 0.2780098,
  12. 0.59868765, 0.40131235,
  13. 0.2544242, 0.09359743, 0.13963096, 0.5123474,
  14. 1.,
  15. 0.84553474, 0.15446526,
  16. 0.06995796, 0.69777346, 0.23226859]
  17. output.lod = [[0, 3, 5, 9, 10, 12, 15]]

参数

  • input (Variable) - 维度为

    sequence_softmax - 图6

    或者

    sequence_softmax - 图7

    的LoDTensor,推荐使用

    sequence_softmax - 图8

    。支持的数据类型:float32,float64。

  • use_cudnn (bool,可选) - 是否用cudnn核,仅当安装cudnn版本的paddle库且使用gpu训练或推理的时候生效。支持的数据类型:bool型。默认值为False。
  • name (str,可选) – 具体用法请参见 Name ,一般无需设置,默认值为None。

返回

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

返回类型

Variable

代码示例

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