聊聊HuggingFace Transformer

2023-08-27 12:00:14

概述

參見:聊聊HuggingFace

專案元件

一個完整的transformer模型主要包含三部分:Config、Tokenizer、Model。

Config

用於設定模型的名稱、最終輸出的樣式、隱藏層寬度和深度、啟用函數的類別等。
範例:

{
  "architectures": [
    "BertForMaskedLM"
  ],
  "attention_probs_dropout_prob": 0.1,
  "gradient_checkpointing": false,
  "hidden_act": "gelu",
  "hidden_dropout_prob": 0.1,
  "hidden_size": 768,
  "initializer_range": 0.02,
  "intermediate_size": 3072,
  "layer_norm_eps": 1e-12,
  "max_position_embeddings": 512,
  "model_type": "bert",
  "num_attention_heads": 12,
  "num_hidden_layers": 12,
  "pad_token_id": 0,
  "position_embedding_type": "absolute",
  "transformers_version": "4.6.0.dev0",
  "type_vocab_size": 2,
  "use_cache": true,
  "vocab_size": 30522
}

Tokenizer

將純文字轉換為編碼的過程(注意:該過程並不會生成詞向量)。由於模型(Model)並不能識別(或很好的識別)文字資料,因此對於輸入的文字需要做一層編碼。在這個過程中,首先會將輸入文字分詞而後新增某些特殊標記([MASK]標記、[SEP]、[CLS]標記),比如斷句等,最後就是轉換為數位型別的ID(也可以理解為是字典索引)。
範例:

pt_batch = tokenizer(
    ["We are very happy to show you the