huggingface conformer pipeline的一些方法

一、将模型下载到本地并使用本地模型的方法

transformers库学习笔记(一):安装与测试 - 知乎


 

一、修改模型下载后本地存放的地址:

在调用from_pretrained函数时使用cache_dir入参,指定缓存文件夹名
如指定缓存位置为当前目录:

AutoModel.from_pretrained('bert-base-chinese', cache_dir='./')

二、https://blog.csdn.net/zp_stu/article/details/126410323

在调用from_pretrained函数时使用cache_dir入参,指定缓存文件夹名
如指定缓存位置为当前目录:

AutoModel.from_pretrained('bert-base-chinese', cache_dir='./')

三、[NLP] transformers 使用指南_autoconfig.from_pretrained_文森特没有眼泪的博客-CSDN博客

1、conformer内置的17中神经网络

T5 model
DistilBERT model
ALBERT model
CamemBERT model
XLM-RoBERTa model
Longformer model
RoBERTa model
Reformer model
Bert model
OpenAI GPT model
OpenAI GPT-2 model
Transformer-XL model
XLNet model
XLM model
CTRL model
Flaubert model
ELECTRA model

这些模型的参数、用法大同小异。默认框架为 PyTorch,使用 TensorFlow 框架在类的前面加上 'TF" 即可。

每种模型都有至少一个预训练模型,限于篇幅,这里仅仅列举 Bert 的常用预训练模型:
模型    模型细节
bert-base-uncased    12-layer, 768-hidden, 12-heads, 110M parameters. Trained on lower-cased English text.
bert-large-uncased    24-layer, 1024-hidden, 16-heads, 340M parameters. Trained on lower-cased English text.
bert-base-cased    12-layer, 768-hidden, 12-heads, 110M parameters. Trained on cased English text.
bert-large-cased    24-layer, 1024-hidden, 16-heads, 340M parameters. Trained on cased English text.
bert-base-multilingual-cased    12-layer, 768-hidden, 12-heads, 110M parameters. Trained on cased text in the top 104 languages with the largest Wikipedias
bert-base-chinese    12-layer, 768-hidden, 12-heads, 110M parameters. Trained on cased Chinese Simplified and Traditional text.
 

完整的预训练模型列表可以在 transformers 官网上找到。

使用 transformers 库有三种方法:

  1. 使用 pipeline
  2. 指定预训练模型;
  3. 使用 AutoModels 加载预训练模型。

1. transformers.pipeline

这个管线函数包含三个部分:

    Tokenizer;
    一个模型实例;
    其它增强模型输出的功能。

它只有一个必需参数 task,接受如下变量之一:

    ”feature-extraction”
    ”sentiment-analysis”
    ”ner”
    ”question-answering”
    ”fill-mask”
    ”summarization”
    ”translation_xx_to_yy”
    ”text-generation”

这个函数还有其它可选参数,但是我的试用经验是,什么都不要动,使用默认参数即可。

例子:

>> from transformers import pipeline

>>> nlp = pipeline("sentiment-analysis")

>>> print(nlp("I hate you"))
[{'label': 'NEGATIVE', 'score': 0.9991129040718079}]

>>> print(nlp("I love you"))
[{'label': 'POSITIVE', 'score': 0.9998656511306763}]
 

2. 指定预训练模型

这里我们以 Bert 为例。

2.1 配置 Bert 模型(可选,推荐不使用)transformers.BertConfig

transformers.BertConfig 可以自定义 Bert 模型的结构,以下参数都是可选的:

vocab_size:词汇数,默认 30522;
hidden_size:编码器内隐藏层神经元数量,默认 768;
num_hidden_layers:编码器内隐藏层层数,默认 12;
num_attention_heads:编码器内注意力头数,默认 12;
intermediate_size:编码器内全连接层的输入维度,默认 3072;
hidden_act:编码器内激活函数,默认 ‘gelu’,还可为 ‘relu’、‘swish’ 或 ‘gelu_new’
hidden_dropout_prob:词嵌入层或编码器的 dropout,默认为 0.1;
attention_probs_dropout_prob:注意力的 dropout,默认为 0.1;
max_position_embeddings:模型使用的最大序列长度,默认为 512;
type_vocab_size:词汇表类别,默认为 2;
initializer_range:神经元权重的标准差,默认为 0.02;
layer_norm_eps:layer normalization 的 epsilon 值,默认为 1e-12.

使用方法:

configuration = BertConfig() # 进行模型的配置,变量为空即使用默认参数

model = BertModel(configuration) # 使用自定义配置实例化 Bert 模型

configuration = model.config # 查看模型参数
 

2.2 分词 transformers.BertTokenizer

所有的 tokenizer 都继承自 transformers.PreTrainedTokenizer 基类,因此有共同的参数和方法实例化的参数有:

    model_max_length:可选参数,最大输入长度,默认为 1e30;
    padding_side:可选参数,填充的方向,应为 ‘left’ 或 ‘right’;
    bos_token:可选参数,每句话的起始标记,默认为 ‘’;
    eos_token:可选参数,每句话的结束标记,默认为 ‘’;
    unk_token:可选参数,未知的标记,默认为 ‘’;
    sep_token:可选参数,分隔标记,默认为 ‘’;
    pad_token:可选参数,填充标记,默认为 ‘’;
    cls_token:可选参数,分类标记,默认为 ‘’;
    mask_token:可选参数,遮盖标记,默认为 ‘<MASK’。

 

为了演示,我们先实例化一个 BertTokenizer

1、

  • from_pretrained(model):载入预训练词汇表;
  • tokenizer.tokenize(str):分词;

tokenizer = BertTokenizer.from_pretrained('bert-base-cased')

>>> tokenizer.tokenize('Hello word!')
['Hello', 'word', '!']

2、编码

  • encode(text, ...):将文本分词后编码为包含对应 id 的列表;

>>> tokenizer.encode('Hello word!')
[101, 8667, 1937, 106, 102]

3、

  • encode_plus(text, ...):将文本分词后创建一个包含对应 id,token 类型及是否遮盖的词典;

tokenizer.encode_plus('Hello world!')
{'input_ids': [101, 8667, 1937, 106, 102], 'token_type_ids': [0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1]}
 

4、

  • convert_ids_to_tokens(ids, skip_special_tokens):将 id 映射为 token;
  • >>> tokenizer.convert_ids_to_tokens(tokens)
    ['[CLS]', 'Hello', 'word', '!', '[SEP]']
  • 5、
  • decode(token_ids):将 id 解码;
  • >>> tokenizer.decode(tokens)
    '[CLS] Hello word! [SEP]'
    6、
  • convert_tokens_to_ids(tokens):将 token 映射为 id。
  • >>> tokenizer.convert_tokens_to_ids(['[CLS]', 'Hello', 'word', '!', '[SEP]'])
    [101, 8667, 1937, 106, 102]

    2.3 使用预训练模型

    根据任务的需要,既可以选择没有为指定任务 finetune 的模型如 transformers.BertModel,也可以选择为指定任务 finetune 之后的模型如 transformers.BertForSequenceClassification。一共有 6 个指定的任务类型:

        transformers.BertForMaskedLM:语言模型;
        transformers.BertForNextSentencePrediction:判断下一句话是否与上一句有关;
        transformers.BertForSequenceClassification:序列分类如 GLUE;
        transformers.BertForMultipleChoice:文本分类;
        transformers.BertForTokenClassification:token 分类如 NER,
        transformers.BertForQuestionAnswering;问答。

    3. 使用 AutoModels

    使用 AutoModels 与上面的指定模型进行预训练大同小异,只不过是另一种方式加载模型而已。
    3.1 加载自动配置 transformers.AutoConfig

    使用类方法 from_pretrained 加载模型配置,参数既可以为模型名称,也可以为具体文件。

    config = AutoConfig.from_pretrained('bert-base-uncased')
    # 或者直接加载模型文件
    config = AutoConfig.from_pretrained('./test/bert_saved_model/')

    3.2 加载分词器 transformers.AutoTokenizer

    与上面的 BertTokenizer 非常相似,也是使用 from_pretrained 类方法加载预训练模型。

    tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
    # 或者直接加载模型文件
    tokenizer = AutoTokenizer.from_pretrained('./test/bert_saved_model/')

    3.3 加载模型 transformers.AutoModel

    可以使用 from_pretrained 加载预训练模型:

    model = AutoModel.from_pretrained('bert-base-uncased')
    # 或者直接加载模型文件
    model = AutoModel.from_pretrained('./test/bert_model/') 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Conformer模型在数据增强方面也可以使用Transformers库中的一些方法。以下是一些可能有用的参数: - `spec_augment`: 这个参数可以用于对输入的声谱图进行增广,包括时间和频率的随机掩蔽。可以使用以下代码启用这个参数: ``` from transformers import Wav2Vec2FeatureExtractor feature_extractor = Wav2Vec2FeatureExtractor( feature_size=1, sampling_rate=16000, padding_value=0.0, do_normalize=True, return_attention_mask=True, spec_augment=True, # 启用spec_augment mask_time_prob=0.05, # 时间掩蔽的概率 mask_time_length=10, # 时间掩蔽的长度 mask_feature_prob=0.05, # 频率掩蔽的概率 mask_feature_length=5 # 频率掩蔽的长度 ) ``` - `speed_up`: 这个参数可以用于对输入的声音进行速度调整。可以使用以下代码启用这个参数: ``` from transformers import Wav2Vec2Processor processor = Wav2Vec2Processor( sampling_rate=16000, padding=True, max_length=1024, speed_up=True, # 启用speed_up resampling_rate=2 # 速度调整的倍数 ) ``` - `pitch_shift`: 这个参数可以用于对输入的声音进行音高调整。可以使用以下代码启用这个参数: ``` from transformers import Wav2Vec2Processor processor = Wav2Vec2Processor( sampling_rate=16000, padding=True, max_length=1024, pitch_shift=True, # 启用pitch_shift pitch_shift_steps=4 # 音高调整的步数 ) ``` 这些参数对于对于Conformer模型的数据增广是非常有用的。你可以根据具体的任务需求,选择适当的参数进行数据增广。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值