speechbrain.lobes.models.huggingface_transformers.textencoder 模块

这个叶节点支持集成通用的huggingface预训练文本编码器(例如BERT)。

需要安装来自HuggingFace的Transformer: https://huggingface.co/transformers/installation.html

Authors
  • Sylvain de Langen 2024

摘要

类:

TextEncoder

该模块支持集成通用的HuggingFace文本编码器(例如BERT)。

参考

class speechbrain.lobes.models.huggingface_transformers.textencoder.TextEncoder(source, save_path, freeze=True, num_layers: int | None = None, **kwargs)[source]

基础类: HFTransformersInterface

该模块支持集成通用的HuggingFace文本编码器(例如BERT)。要求从source中找到的AutoModel在输出字典中具有last_hidden_state键。

Parameters:
  • source (str) – HuggingFace 中心名称:例如 “google-bert/bert-base”

  • save_path (str) – 下载模型的路径(目录)。

  • freeze (bool (默认值: True)) – 如果为True,模型将被冻结。如果为False,模型将与管道的其余部分一起训练。

  • num_layers (int, 可选) – 当指定时,假设传递的语言模型可以以这种方式截断, 传递的模型的编码器将被截断到指定的层(对其进行修改)。这意味着嵌入将是第N层的嵌入,而不是最后一层的嵌入。对于某些任务,最后一层不一定是最好的。

  • **kwargs – 传递给from_pretrained函数的额外关键字参数。

Example

>>> inputs = ["La vie est belle"]
>>> model_hub = "google-bert/bert-base-multilingual-cased"
>>> save_path = "savedir"
>>> model = TextEncoder(model_hub, save_path)
>>> outputs = model(inputs)
truncate(keep_layers: int)[source]

将编码器截断到特定层,以便输出嵌入是第n层的隐藏状态。

Parameters:

keep_layers (int) – 要保留的层数,例如4将保留层 [0, 1, 2, 3]

forward(input_texts, return_tokens: bool = False)[source]

该方法实现了编码器模型的前向传播,从输入文本生成批量的嵌入。

Parameters:
  • input_texts (list of str) – 文本列表(必填)。

  • return_tokens (bool) – 是否也返回令牌。

Returns:

  • (any, torch.Tensor) 如果 return_tokens == True – 分别是: - 以填充批次张量形式的分词句子。在 HF

    格式中,由分词器返回。

    • 模型的输出嵌入(即最后一个隐藏状态)

  • torch.Tensor 如果 return_tokens == False – 模型的输出嵌入(即最后一个隐藏状态)