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

RandomDeletion layer

[源代码]

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
)

通过随机删除 token 来增强输入。

当您需要使用论文 [EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks](https://arxiv.org/pdf/1901.11196.pdf) 中描述的删除增强技术来生成新数据时,此层非常方便。该层期望输入已预先分割为 token 级别的输入。这允许控制增强的级别,您可以按字符进行分割以进行字符级别的交换,或按单词进行分割以进行单词级别的交换。

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

参数

  • rate: 选择一个 token 进行删除的概率。
  • max_deletions: 要删除的最大 token 数量。
  • skip_list: 一个 token 值列表,这些 token 值不应被视为删除的候选。
  • skip_fn: 一个函数,它接收一个标量 tensor token 作为输入,并输出一个标量 tensor True/False 值。True 值表示该 token 不应被视为删除的候选。此函数必须是可追踪的——它应该由 tensorflow 操作组成。
  • skip_py_fn: 一个函数,它接收一个 Python token 值作为输入,并输出 TrueFalse。True 值表示该 token 不应被视为删除的候选。与 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']