sayby commited on
Commit
2a44926
1 Parent(s): 8a639b6

Upload model

Browse files
config.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "RNATorsionBERTModel"
4
+ ],
5
+ "auto_map": {
6
+ "AutoConfig": "rna_torsionbert_config.RNATorsionBertConfig",
7
+ "AutoModel": "rna_torsionbert_model.RNATorsionBERTModel"
8
+ },
9
+ "hidden_size": 1024,
10
+ "k": 3,
11
+ "model_type": "rna_torsionbert",
12
+ "num_classes": 18,
13
+ "torch_dtype": "float32",
14
+ "transformers_version": "4.29.0"
15
+ }
pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4e770ee16a98d493a917a3b445c84ae2b4c22e5a94fa129e0bc9d222107596b9
3
+ size 347678917
rna_torsionbert_config.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import PretrainedConfig
2
+
3
+
4
+ class RNATorsionBertConfig(PretrainedConfig):
5
+ model_type = "rna_torsionbert"
6
+ def __init__(self, k: int = 3, num_classes: int = 18, hidden_size: int = 1024, **kwargs):
7
+ """
8
+ Initialise the model.
9
+ :param k: the k-mer size.
10
+ :param num_classes: the number of labels.
11
+ :param hidden_size: size of the hidden layer after BERT hidden states.
12
+ """
13
+ self.k = k
14
+ self.num_classes = num_classes
15
+ self.hidden_size = hidden_size
16
+ super().__init__(**kwargs)
rna_torsionbert_model.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from torch import nn
2
+ from transformers import PreTrainedModel, AutoModel, AutoConfig
3
+
4
+ from .rna_torsionbert_config import RNATorsionBertConfig
5
+
6
+
7
+ class RNATorsionBERTModel(PreTrainedModel):
8
+ config_class = RNATorsionBertConfig
9
+
10
+ def __init__(self, config):
11
+ super().__init__(config)
12
+ self.init_model(config.k)
13
+ self.dnabert = AutoModel.from_pretrained(
14
+ self.model_name, config=self.dnabert_config, trust_remote_code=True
15
+ )
16
+ self.regressor = nn.Sequential(
17
+ nn.LayerNorm(self.dnabert_config.hidden_size),
18
+ nn.Linear(self.dnabert_config.hidden_size, config.hidden_size),
19
+ nn.GELU(),
20
+ nn.Linear(config.hidden_size, config.num_classes),
21
+ nn.Softmax(dim=-1)
22
+ )
23
+
24
+ def init_model(self, k: int):
25
+ model_name = f"zhihan1996/DNA_bert_{k}"
26
+ revisions = {3: "ed28178", 4: "c8499f0", 5: "c296157", 6: "a79a8fd"}
27
+ dnabert_config = AutoConfig.from_pretrained(
28
+ model_name,
29
+ revision=revisions[k],
30
+ trust_remote_code=True,
31
+ )
32
+ self.dnabert_config = dnabert_config
33
+ self.model_name = model_name
34
+
35
+ def forward(self, tensor):
36
+ z = self.dnabert(**tensor).last_hidden_state
37
+ output = self.regressor(z)
38
+ return {"logits": output}