一昨日と昨日の記事を Git に移行した。
GitHub - CookieBox26/ML: machine learning
- tests/test_bert_tokenization.py; トークナイザの挙動の確認をテストにした。
- script.py; モデルのコンフィグレーションと構造をプリントしただけ。
- 語数が 28996 だったのがわかった。
◆ モデルのコンフィグレーション BertConfig { "architectures": [ "BertForMaskedLM" ], "attention_probs_dropout_prob": 0.1, "directionality": "bidi", "gradient_checkpointing": false, "hidden_act": "gelu", "hidden_dropout_prob": 0.1, "hidden_size": 1024, "id2label": { "0": "B-corporation", "1": "B-creative-work", "2": "B-group", "3": "B-location", "4": "B-person", "5": "B-product", "6": "I-corporation", "7": "I-creative-work", "8": "I-group", "9": "I-location", "10": "I-person", "11": "I-product", "12": "O" }, "initializer_range": 0.02, "intermediate_size": 4096, "layer_norm_eps": 1e-12, "max_position_embeddings": 512, "model_type": "bert", "num_attention_heads": 16, "num_hidden_layers": 24, "pad_token_id": 0, "pooler_fc_size": 768, "pooler_num_attention_heads": 12, "pooler_num_fc_layers": 3, "pooler_size_per_head": 128, "pooler_type": "first_token_transform", "type_vocab_size": 2, "vocab_size": 28996 } ◆ モデルの埋め込み層 BertEmbeddings( (word_embeddings): Embedding(28996, 1024, padding_idx=0) (position_embeddings): Embedding(512, 1024) (token_type_embeddings): Embedding(2, 1024) (LayerNorm): LayerNorm((1024,), eps=1e-12, elementwise_affine=True) (dropout): Dropout(p=0.1, inplace=False) ) ◆ モデルのエンコーダ層(以下が24層重なっているので最初の1層だけ) BertLayer( (attention): BertAttention( (self): BertSelfAttention( (query): Linear(in_features=1024, out_features=1024, bias=True) (key): Linear(in_features=1024, out_features=1024, bias=True) (value): Linear(in_features=1024, out_features=1024, bias=True) (dropout): Dropout(p=0.1, inplace=False) ) (output): BertSelfOutput( (dense): Linear(in_features=1024, out_features=1024, bias=True) (LayerNorm): LayerNorm((1024,), eps=1e-12, elementwise_affine=True) (dropout): Dropout(p=0.1, inplace=False) ) ) (intermediate): BertIntermediate( (dense): Linear(in_features=1024, out_features=4096, bias=True) ) (output): BertOutput( (dense): Linear(in_features=4096, out_features=1024, bias=True) (LayerNorm): LayerNorm((1024,), eps=1e-12, elementwise_affine=True) (dropout): Dropout(p=0.1, inplace=False) ) ) ◆ モデルのプーラー層 BertPooler( (dense): Linear(in_features=1024, out_features=1024, bias=True) (activation): Tanh() ) ◆ ドロップアウトと全結合層(New!) Dropout(p=0.1, inplace=False) Linear(in_features=1024, out_features=13, bias=True) ◆ 適当な文章をモデルに流してみる.→ 14トークン×13クラスの予測結果になっている(サイズが). torch.Size([1, 14, 13])