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

RandomDeletion 層

[原始碼]

RandomDeletion 類別

keras_hub.layers.RandomDeletion(
    rate,
    max_deletions=None,
    skip_list=None,
    skip_fn=None,
    skip_py_fn=None,
    seed=None,
    name=None,
    dtype="int32",
    **kwargs
)

透過隨機刪除 tokens 來擴增輸入。

當您需要使用刪除擴增來生成新數據時,此層非常方便,如論文 [EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks] (https://arxiv.org/pdf/1901.11196.pdf) 中所述。此層預期輸入已預先分割為 token 層級的輸入。這允許控制擴增的程度,您可以按字元分割以進行字元層級的交換,或按單字分割以進行單字層級的交換。

輸入數據應作為 tensors、tf.RaggedTensors 或列表傳遞。對於批次輸入,輸入應為列表的列表或二階 tensor。對於非批次輸入,每個元素應為列表或一階 tensor。

引數

  • rate:token 被選中刪除的機率。
  • max_deletions:要刪除的最大 token 數量。
  • skip_list:不應被視為刪除候選者的 token 值列表。
  • skip_fn:一個函數,它接受純量 tensor token 作為輸入,並返回純量 tensor True/False 值作為輸出。True 值表示該 token 不應被視為刪除候選者。此函數必須是可追蹤的——它應由 tensorflow 運算組成。
  • skip_py_fn:一個函數,它接受 python token 值作為輸入,並返回 TrueFalse 作為輸出。True 值表示不應被視為刪除候選者。與 skip_fn 引數不同,此引數不必是可追蹤的——它可以是任何 python 函數。
  • seed:隨機數生成器的種子。

範例

單字層級用法。

>>> keras.utils.set_random_seed(1337)
>>> x = ["Hey I like", "Keras and Tensorflow"]
>>> x = list(map(lambda x: x.split(), x))
>>> augmenter = keras_hub.layers.RandomDeletion(rate=0.4, seed=42)
>>> y = augmenter(x)
>>> list(map(lambda y: " ".join(y), y))
['I like', 'and']

字元層級用法。

>>> keras.utils.set_random_seed(1337)
>>> x = ["Hey Dude", "Speed Up"]
>>> x = list(map(lambda x: list(x), x))
>>> augmenter = keras_hub.layers.RandomDeletion(rate=0.4, seed=42)
>>> y = augmenter(x)
>>> list(map(lambda y: "".join(y), y))
['H Dude', 'pedUp']

與 skip_list 一起使用。

>>> keras.utils.set_random_seed(1337)
>>> x = ["Hey I like", "Keras and Tensorflow"]
>>> x = list(map(lambda x: x.split(), x))
>>> augmenter = keras_hub.layers.RandomDeletion(rate=0.4,
...     skip_list=["Keras", "Tensorflow"], seed=42)
>>> y = augmenter(x)
>>> list(map(lambda y: " ".join(y), y))
['I like', 'Keras Tensorflow']

與 skip_fn 一起使用。

>>> def skip_fn(word):
...     return tf.strings.regex_full_match(word, r"\pP")
>>> keras.utils.set_random_seed(1337)
>>> x = ["Hey I like", "Keras and Tensorflow"]
>>> x = list(map(lambda x: x.split(), x))
>>> augmenter = keras_hub.layers.RandomDeletion(rate=0.4,
...     skip_fn=skip_fn, seed=42)
>>> y = augmenter(x)
>>> list(map(lambda y: " ".join(y), y))
['I like', 'and']

與 skip_py_fn 一起使用。

>>> def skip_py_fn(word):
...     return len(word) < 4
>>> keras.utils.set_random_seed(1337)
>>> x = ["Hey I like", "Keras and Tensorflow"]
>>> x = list(map(lambda x: x.split(), x))
>>> augmenter = RandomDeletion(rate=0.4,
...     skip_py_fn=skip_py_fn, seed=42)
>>> y = augmenter(x)
>>> list(map(lambda y: " ".join(y), y))
['Hey I', 'and Tensorflow']