Upload model
Browse files- config.json +35 -0
- hierarchical_bert_architecture.py +25 -0
- pytorch_model.bin +3 -0
config.json
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"architectures": [
|
3 |
+
"HierarchicalBertModel"
|
4 |
+
],
|
5 |
+
"attention_probs_dropout_prob": 0.1,
|
6 |
+
"auto_map": {
|
7 |
+
"AutoModel": "hierarchical_bert_architecture.HierarchicalBertModel"
|
8 |
+
},
|
9 |
+
"classifier_dropout": null,
|
10 |
+
"directionality": "bidi",
|
11 |
+
"hidden_act": "gelu",
|
12 |
+
"hidden_dropout_prob": 0.1,
|
13 |
+
"hidden_size": 768,
|
14 |
+
"initializer_range": 0.02,
|
15 |
+
"intermediate_size": 3072,
|
16 |
+
"layer_norm_eps": 1e-12,
|
17 |
+
"max_position_embeddings": 512,
|
18 |
+
"model_type": "bert",
|
19 |
+
"num_attention_heads": 12,
|
20 |
+
"num_hidden_layers": 12,
|
21 |
+
"num_main_segment": 0,
|
22 |
+
"num_sub_segment": 0,
|
23 |
+
"pad_token_id": 0,
|
24 |
+
"pooler_fc_size": 768,
|
25 |
+
"pooler_num_attention_heads": 12,
|
26 |
+
"pooler_num_fc_layers": 3,
|
27 |
+
"pooler_size_per_head": 128,
|
28 |
+
"pooler_type": "first_token_transform",
|
29 |
+
"position_embedding_type": "absolute",
|
30 |
+
"torch_dtype": "float32",
|
31 |
+
"transformers_version": "4.22.2",
|
32 |
+
"type_vocab_size": 2,
|
33 |
+
"use_cache": true,
|
34 |
+
"vocab_size": 105879
|
35 |
+
}
|
hierarchical_bert_architecture.py
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from torch import nn
|
2 |
+
import torch
|
3 |
+
from transformers import BertModel, PreTrainedModel
|
4 |
+
|
5 |
+
from typing import Tuple
|
6 |
+
|
7 |
+
|
8 |
+
class HierarchicalBertModel(PreTrainedModel):
|
9 |
+
|
10 |
+
def __init__(self, config, num_main_segment=None, num_sub_segment=None):
|
11 |
+
super(HierarchicalBertModel, self).__init__(config=config)
|
12 |
+
self.num_main_segment = num_main_segment if num_main_segment else config.num_main_segment
|
13 |
+
self.num_sub_segment = num_sub_segment if num_sub_segment else config.num_sub_segment
|
14 |
+
self.bert = BertModel.from_pretrained("bert-base-multilingual-uncased")
|
15 |
+
self.dropout = nn.Dropout(0.1)
|
16 |
+
self.hidden_2 = nn.Linear(768, 768)
|
17 |
+
self.fc_main = nn.Linear(768, self.num_main_segment)
|
18 |
+
self.fc_sub = nn.Linear(768, self.num_sub_segment)
|
19 |
+
|
20 |
+
def forward(self, input_ids: torch.tensor, attention_masks: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]:
|
21 |
+
outputs = self.bert(input_ids=input_ids,
|
22 |
+
attention_mask=attention_masks)
|
23 |
+
last_hidden_state_cls = outputs[0][:, 0, :]
|
24 |
+
out = self.hidden_2(last_hidden_state_cls)
|
25 |
+
return self.fc_main(last_hidden_state_cls), self.fc_sub(last_hidden_state_cls)
|
pytorch_model.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:ba54163add74c9f167845c3e6e366bd441ad30e9236e1beeeba668fe552041b9
|
3 |
+
size 671857125
|