标签:激活 import 文本 ret cab init 实例化 信息 例子
本文使用的是 Transformer 库的预训练模型, 主要是对 xlm 部分的翻译.
xlm 模型是在 BERT 模型的基础上使用多种语言或者跨语言语料库训练得到的预训练模型, 根据训练数据与训练方法的不同, 有三张预训练模型, 分别是
xlm 在使用时的特点有:
源码中的配置与参数:
class
transformers.``XLMConfig
(vocab_size=30145, emb_dim=2048, n_layers=12, n_heads=16, dropout=0.1, attention_dropout=0.1, gelu_activation=True, sinusoidal_embeddings=False, causal=False, asm=False, n_langs=1, use_lang_emb=True, max_position_embeddings=512, embed_init_std=0.02209708691207961, layer_norm_eps=1e-12, init_std=0.02, bos_index=0, eos_index=1, pad_index=2, unk_index=3, mask_index=5, is_encoder=True, summary_type=‘first‘, summary_use_proj=True, summary_activation=None, summary_proj_to_labels=True, summary_first_dropout=0.1, start_n_top=5, end_n_top=5, mask_token_id=0, lang_id=0, bos_token_id=0, pad_token_id=2, kwargs)**
这是 xlm 模型的配置类, 用于使用特定的参数实例化一个 xlm 模型, 同时定义模型的结构, 对于默认的结构, 得到的模型类似于 xlm-mlm-en-2048 的结构. 这个类是继承自 PretrainedConfig
, 同时可以控制模型的输出, 如果想要获取更多信息, 可以参考 PretrainedConfig
.
下面解释一下这个类的参数与使用方法:
vocab_size (int
, optional, defaults to 30145) – 词典的大小, 定义了对于 xlm 来说, 分词方法使用的是 BPE, 这就表示分词之后的词典的 subword 的总数, 也是在模型的最初结构的 embedding 的输入的向量的长度
emb_dim (int
, optional, defaults to 2048) – encoder 与 pooler 层的维度, 也就是从 embedding 层输出的维度.
n_layer (int
, optional, defaults to 12) – Transformer Encoder 层的个数
n_head (int
, optional, defaults to 16) – Transformer encoder 中 self_Attention 的 Attention 的个数
dropout (float
, optional, defaults to 0.1) – 全连接层的 dropout
attention_dropout (float
, optional, defaults to 0.1) – Attention 机制的 Dropout
gelu_activation (boolean
, optional, defaults to True
) – 在 encoder 与 pooler 层的非线性激活函数, 如果是 False, 那么就使用默认的 relu 激活函数
sinusoidal_embeddings (boolean
, optional, defaults to False
) – Transformer 的 embedding 阶段使用 sin 的位置编码信息还是绝对位置编码信息, 这里在 Google 的Transformer 模型中使用的是 sin 的位置编码
causal (boolean
, optional, defaults to False
) – 对应与 CLM 模型, Attention 机制不是双向的, 而是序列的
asm (boolean
, optional, defaults to False
) – 最后的预测层是使用 log softmax 还是线性层
n_langs (int
, optional, defaults to 1) – 模型处理的语言, 1 表示单语语料库
use_lang_emb (boolean
, optional, defaults to True
) – 是否使用多语言模型, 使用方法见 the multilingual models page
max_position_embeddings (int
, optional, defaults to 512) – 训练模型是使用的句子的最长的长度
embed_init_std (float
, optional, defaults to 2048^-0.5) – 初始化 embedding 矩阵的标准差
init_std (int
, optional, defaults to 50257) – embedding 矩阵以外的参数矩阵的正态分布初始化标准差
layer_norm_eps (float
, optional, defaults to 1e-12) – 归一化层使用的超参数 \(\epsilon\)
bos_index (int
, optional, defaults to 0) – 句子的开头在词典中的索引
eos_index (int
, optional, defaults to 1) – 句子的结尾在词典中的索引
pad_index (int
, optional, defaults to 2) – padding 在词典中的索引
unk_index (int
, optional, defaults to 3) – 未知单词在词典中的索引
mask_index (int
, optional, defaults to 5) – mask 标志在词典中的索引
is_encoder (boolean
, optional, defaults to True
) – 初始化模型是 Transformer 中的encoder 结构还是 decoder 结构, 在双向的时候是 encoder, 单向的时候是 decoder
summary_type (string
, optional, defaults to “first”) –
文本分类任务的时候, 在隐藏层采用的 token 的位置, bert 是第一个, xlnet 是最后一个, 将得到的隐藏层状态经过一个全连接层即可完成分类任务,:
lang_id (int
, optional, defaults to 1) – 生成文本模型时指定一种语言
下面是默认的情况下的例子:
from transformers import XLMConfig, XLMModel
# Initializing a XLM configuration
configuration = XLMConfig()
# Initializing a model from the configuration
model = XLMModel(configuration)
# Accessing the model configuration
configuration = model.config
special_tokens
与函数 set_special_tokens
可以添加额外的标志进入词典使用的参数有:
string
) – Vocabulary file.string
) – Merges file.bool
, optional, defaults to True
) – 小写化bool
, optional, defaults to True
) – 去掉开头与末尾的空格bool
, optional, defaults to False
) – 标记时是否保留重音符号string
, optional, defaults to “string
, optional, defaults to “string
, optional, defaults to “”) –句子之间分开的标志string
, optional, defaults to “”) – 在进行序列分类时使用的分类器令牌(对整个序列进行分类,而不是按令牌分类)。使用特殊标记构建时,它是序列的第一个标记标签:激活 import 文本 ret cab init 实例化 信息 例子
原文地址:https://www.cnblogs.com/wevolf/p/12576387.html