KerasHub: 预训练模型 / API文档 / 预处理层 / StartEndPacker 层

StartEndPacker layer

[源代码]

StartEndPacker

keras_hub.layers.StartEndPacker(
    sequence_length,
    start_value=None,
    end_value=None,
    pad_value=None,
    return_padding_mask=False,
    name=None,
    padding_side="right",
    **kwargs
)

向序列添加开始和结束标记,并填充到固定长度。

当对翻译等任务进行分词输入时,此层非常有用,因为每个序列都应包含开始和结束标记。应在分词后调用此层。该层将首先修剪输入以适应,然后添加开始/结束标记,最后根据需要填充到 sequence_length

输入数据应作为张量、tf.RaggedTensor 或列表进行传递。对于批处理输入,输入应为列表的列表或秩为二的张量。对于未批处理的输入,每个元素都应为列表或秩为一的张量。

参数

  • sequence_length: int。所需的输出长度。
  • start_value: int/str/list/tuple。要放在每个序列开头的 ID 或标记。dtype 必须与该层输入张量的 dtype 匹配。如果为 None,则不添加开始值。
  • end_value: int/str/list/tuple。要放在每个输入片段末尾的 ID 或标记。dtype 必须与该层输入张量的 dtype 匹配。如果为 None,则不添加结束值。
  • pad_value: int/str。要放在序列中最后一个片段之后的未使用位置的 ID 或标记。如果为 None,则根据输入张量的 dtype 添加 0 或 ""。
  • return_padding_mask: bool。是否返回一个布尔填充掩码,指示所有被 pad_value 填充的位置。
  • padding_side: str。是“left”还是“right”填充输入。默认为“right”。

调用参数

  • inputs: 一个 tf.Tensortf.RaggedTensor 或 Python 字符串列表。
  • sequence_length:传递此参数以覆盖该层已配置的 sequence_length
  • add_start_value: 传递 False 以便为此输入不追加开始值。
  • add_end_value: 传递 False 以便为此输入不追加结束值。

示例

未批量的输入 (int)。

>>> inputs = [5, 6, 7]
>>> start_end_packer = keras_hub.layers.StartEndPacker(
...     sequence_length=7, start_value=1, end_value=2,
... )
>>> outputs = start_end_packer(inputs)
>>> np.array(outputs)
array([1, 5, 6, 7, 2, 0, 0], dtype=int32)

批量输入的输入 (int)。

>>> inputs = [[5, 6, 7], [8, 9, 10, 11, 12, 13, 14]]
>>> start_end_packer = keras_hub.layers.StartEndPacker(
...     sequence_length=6, start_value=1, end_value=2,
... )
>>> outputs = start_end_packer(inputs)
>>> np.array(outputs)
array([[ 1,  5,  6,  7,  2,  0],
       [ 1,  8,  9, 10, 11,  2]], dtype=int32)

未批量的输入 (str)。

>>> inputs = tf.constant(["this", "is", "fun"])
>>> start_end_packer = keras_hub.layers.StartEndPacker(
...     sequence_length=6, start_value="<s>", end_value="</s>",
...     pad_value="<pad>"
... )
>>> outputs = start_end_packer(inputs)
>>> np.array(outputs).astype("U")
array(['<s>', 'this', 'is', 'fun', '</s>', '<pad>'], dtype='<U5')

批量输入的输入 (str)。

>>> inputs = tf.ragged.constant([["this", "is", "fun"], ["awesome"]])
>>> start_end_packer = keras_hub.layers.StartEndPacker(
...     sequence_length=6, start_value="<s>", end_value="</s>",
...     pad_value="<pad>"
... )
>>> outputs = start_end_packer(inputs)
>>> np.array(outputs).astype("U")
array([['<s>', 'this', 'is', 'fun', '</s>', '<pad>'],
       ['<s>', 'awesome', '</s>', '<pad>', '<pad>', '<pad>']], dtype='<U7')

多个开始标记。

>>> inputs = tf.ragged.constant([["this", "is", "fun"], ["awesome"]])
>>> start_end_packer = keras_hub.layers.StartEndPacker(
...     sequence_length=6, start_value=["</s>", "<s>"], end_value="</s>",
...     pad_value="<pad>"
... )
>>> outputs = start_end_packer(inputs)
>>> np.array(outputs).astype("U")
array([['</s>', '<s>', 'this', 'is', 'fun', '</s>'],
       ['</s>', '<s>', 'awesome', '</s>', '<pad>', '<pad>']], dtype='<U7')