KerasHub:預訓練模型 / API 文件 / 預處理層 / StartEndPacker 層

StartEndPacker 層

[原始碼]

StartEndPacker 類別

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

將起始和結束符號加入序列,並填充至固定長度。

當為翻譯等任務分詞輸入時,此層很有用,在這些任務中,每個序列都應包含起始和結束標記。它應該在分詞後調用。該層將首先修剪輸入以符合,然後添加起始/結束符號,最後,如果需要,填充至 sequence_length

輸入資料應以張量、tf.RaggedTensor 或列表的形式傳遞。對於批次輸入,輸入應該是列表的列表或秩為 2 的張量。對於非批次輸入,每個元素都應該是列表或秩為 1 的張量。

參數

  • sequence_length:整數。所需的輸出長度。
  • start_value:整數/字串/列表/元組。要放置在每個序列開頭的 ID 或符號。dtype 必須與輸入到該層的張量的 dtype 相符。如果為 None,則不會添加起始值。
  • end_value:整數/字串/列表/元組。要放置在每個輸入片段末尾的 ID 或符號。dtype 必須與輸入到該層的張量的 dtype 相符。如果為 None,則不會添加結束值。
  • pad_value:整數/字串。要放置在序列中最後一個片段之後的未使用位置的 ID 或符號。如果為 None,則將根據輸入張量的 dtype 添加 0 或 ""。
  • return_padding_mask:布林值。是否返回所有用 pad_value 填充的位置的布林填充遮罩。

呼叫參數

  • inputstf.Tensortf.RaggedTensor 或 Python 字串的列表。
  • sequence_length:傳遞此參數以覆蓋該層配置的 sequence_length
  • add_start_value:傳遞 False 以不為此輸入添加起始值。
  • add_end_value:傳遞 False 以不為此輸入添加結束值。

範例

非批次輸入 (整數)。

>>> 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)

批次輸入 (整數)。

>>> 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)

非批次輸入 (字串)。

>>> 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')

批次輸入 (字串)。

>>> 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')