贡献者: int256
transformers 库是要使用 HuggingFace 网站的已经训练好的 torch 网络参数或 tensorflow 网络参数必备的一个包(现在访问 huggingface 网站需要科学上网)。
安装可以使用 pip 命令直接安装:pip install transformers
,使用 huggingface 网站提供的数据集或神经网络参数需要保证电脑里已经装有 PyTorch。(CPU 版的 torch 可以使用命令 pip install torch
安装。安装包较大,建议使用国内 pypi 的镜像站。)
特别的,有的网络参数(.h5 文件)则是 tensorflow 的,那么需要保证电脑已经装有 tensorflow 包。
对于网站上的每个网络参数,介绍一些常见的文件:
readme.md
一类文件:介绍文档。
license
:这文件存储开源协议。
config.json
:这个文件存储了网络的一些配置。
tokenizer.json
、tokenizer_config.json
、vocab
,其中 vocab
文件可能是 txt 或 json 格式。这些文件给分词器使用。
pytorch_model.bin
:存储了 PyTorch 网络的训练好的参数。
tf_model.h5
:存储了 tensorflow 网络的训练好的参数。
special_tokens_map.json
:特殊的 token 的一些配置。
如果要下载一个网络参数,下载上述文件中存在的文件即可。
例如对于一个 PyTorch 的一个网络,下载以下几个文件:
config.json
;
pytorch_model.bin
;
tokenizer_config.json
(有一些模型没有这个文件,是 tokenizer.json
);
vocab.txt
。
假若我们现在已经下载好了,将上述文件放在了 ./package-name
目录下。
观察 config.json
,若发现网络模型是 "BertForSequenceClassification",或我们已经知道这个网络是一个 Bert 的句子分类网络了。那么就可以按如下例程的方式使用这个网络参数:
类似的,对于一个 GPT2LMHead 模型的网络,例程如下:
对于其中的 config.json
,我们可以通过其看出这个网络的一些配置,一个典型的配置文件以及各配置意义如下:
各个配置意义如下:
architectures
:模型的名称;
attention_probs_dropout_prob
:注意力的 dropout,默认为 0.1;
directionality
:文字编码方向采用的算法,一般为 bidi;
hidden_act
:编码器内激活函数,默认"gelu",还可为"relu"、"swish"或 "gelu_new";
hidden_dropout_prob
:词嵌入层或编码器的 dropout 配置,默认为 0.1;
hidden_size
:编码器内隐藏层神经元数量,默认 768;
initializer_range
:神经元权重的标准差,默认为 0.02;
intermediate_size
:编码器内全连接层的输入维度,默认 3072;
layer_norm_eps
:layer normalization 的 epsilon 值,默认为 1e-12;
max_position_embeddings
:模型使用的最大序列长度,默认为 512;
model_type
:模型的类型,一般是 bert;
num_attention_heads
:编码器内注意力头数,默认 12;
num_hidden_layers
:编码器内隐藏层层数,默认 12;
pooler_fc_size
:Pooler 层(相当于一个全连接层,作为分类器解决序列级 NLP 任务)的大小,默认也为 768;
pooler_num_attention_heads
:Pooler 层注意力头,默认 12;
pooler_num_fc_layers
:Pooler 连接层数,默认 3;
pooler_size_per_head
:每个注意力头的大小;
pooler_type
:Pooler 层类型;
type_vocab_size
:词汇表的类型,默认是 2;
vocab_size
:词汇数,bert 默认 30522,这是因为 bert 以中文字为单位进入输入。
友情链接: 超理论坛 | ©小时科技 保留一切权利