DecodeHelper

class paddle.fluid.layers.DecodeHelper[源代码]

DecodeHelper是一个基类,其子类的实例将在 BasicDecoder 中使用。它提供了在动态解码时采样和产生下一解码步的输入的接口。

initialize()

初始化以产生第一个解码步的输入和每个序列是否结束的初始标识。这是 BasicDecoder 初始化的一部分。

返回

(initial_inputs, initial_finished) 的二元组, initial_inputs 是单个tensor变量或tensor变量组成的嵌套结构,tensor的形状是 \([batch\_size, ...]\)initial_finished 是一个bool类型且形状为 \([batch\_size]\) 的tensor。

返回类型

tuple

sample(time, outputs, states)

根据 outputs 以特定的方式进行采样,该方法是 BasicDecoder.step 中的一部分。

参数:
  • time (Variable) - 调用者提供的形状为[1]的tensor,表示当前解码的时间步长。其数据类型为int64。
  • outputs (Variable) - tensor变量,通常其数据类型为float32或float64,形状为 \([batch\_size, vocabulary\_size]\) ,表示当前解码步预测产生的logit(未归一化的概率),和由 BasicDecoder.output_fn(BasicDecoder.cell.call()) 返回的 outputs 是同一内容。
  • states (Variable) - 单个tensor变量或tensor变量组成的嵌套结构,和由 BasicDecoder.cell.call() 返回的 new_states 是同一内容。

返回:数据类型为int64形状为 \([batch\_size]\) 的tensor,表示采样得到的id。

返回类型:Variable

next_inputs(time, outputs, states, sample_ids)

产生下一解码步的输入、状态,以及每个序列是否结束的标识。该方法是 BasicDecoder.step 中的一部分。

参数:
  • time (Variable) - 调用者提供的形状为[1]的tensor,表示当前解码的时间步长。其数据类型为int64。
  • outputs (Variable) - tensor变量,通常其数据类型为float32或float64,形状为 \([batch\_size, vocabulary\_size]\) ,表示当前解码步预测产生的logit(未归一化的概率),和由 BasicDecoder.output_fn(BasicDecoder.cell.call()) 返回的 outputs 是同一内容。
  • states (Variable) - 单个tensor变量或tensor变量组成的嵌套结构,和由 BasicDecoder.cell.call() 返回的 new_states 是同一内容。
  • sample_ids (Variable) - 数据类型为int64形状为 \([batch\_size]\) 的tensor,和由 sample() 返回的 sample_ids 是同一内容。

返回: (finished, next_inputs, next_states) 的三元组。 next_inputs, next_states 均是单个tensor变量或tensor变量组成的嵌套结构, next_states 和输入参数中的 states 具有相同的结构、形状和数据类型; finished 是一个bool类型且形状为 \([batch\_size]\) 的tensor。

返回类型:tuple