docs(card): fix Model Description architecture mislabel and parameter count + fix Usage example
Browse files
README.md
CHANGED
|
@@ -20,7 +20,7 @@ pipeline_tag: fill-mask
|
|
| 20 |
|
| 21 |
## Model Description
|
| 22 |
|
| 23 |
-
|
| 24 |
|
| 25 |
- **Model Type**: bert
|
| 26 |
- **Data Type**: RNA
|
|
@@ -28,31 +28,40 @@ GPT-2 medium (345M parameters) foundation model pre-trained on RNA gene expressi
|
|
| 28 |
|
| 29 |
## Usage
|
| 30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
```python
|
| 32 |
-
from transformers import AutoModelForMaskedLM, AutoTokenizer
|
| 33 |
import torch
|
|
|
|
| 34 |
|
| 35 |
-
|
| 36 |
-
tokenizer = AutoTokenizer.from_pretrained(
|
|
|
|
|
|
|
| 37 |
|
| 38 |
-
#
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
with torch.no_grad():
|
| 48 |
-
outputs = model(
|
| 49 |
-
logits = outputs.logits
|
| 50 |
-
|
| 51 |
-
predicted_token_id = logits[0, mask_index].argmax(dim=-1)
|
| 52 |
-
predicted_token = tokenizer.decode(predicted_token_id)
|
| 53 |
-
result = prompt.replace(tokenizer.mask_token, predicted_token)
|
| 54 |
-
print(f"Predicted: {result}")
|
| 55 |
|
|
|
|
|
|
|
|
|
|
| 56 |
```
|
| 57 |
|
| 58 |
## Source Code
|
|
|
|
| 20 |
|
| 21 |
## Model Description
|
| 22 |
|
| 23 |
+
BERT-medium foundation model (~332M parameters, 24-layer / 1024-hidden / 16-head topology, sized to match GPT-2-medium) pre-trained on RNA gene expression sequences from the MolCrawl dataset.
|
| 24 |
|
| 25 |
- **Model Type**: bert
|
| 26 |
- **Data Type**: RNA
|
|
|
|
| 28 |
|
| 29 |
## Usage
|
| 30 |
|
| 31 |
+
This tokenizer is a WordLevel vocab of ENSEMBL gene IDs only (no text-mode
|
| 32 |
+
pre-tokenizer). Feed the input as a Python list of gene-ID tokens (one
|
| 33 |
+
position may be `tokenizer.mask_token`) and resolve to IDs through
|
| 34 |
+
`convert_tokens_to_ids` — calling `tokenizer("AUGC...")` on raw nucleotide
|
| 35 |
+
strings collapses to `[UNK]` and the MLM head returns a uniform-prior
|
| 36 |
+
prediction.
|
| 37 |
+
|
| 38 |
```python
|
|
|
|
| 39 |
import torch
|
| 40 |
+
from transformers import AutoModelForMaskedLM, AutoTokenizer
|
| 41 |
|
| 42 |
+
REPO_ID = "kojima-lab/molcrawl-rna-bert-medium"
|
| 43 |
+
tokenizer = AutoTokenizer.from_pretrained(REPO_ID)
|
| 44 |
+
model = AutoModelForMaskedLM.from_pretrained(REPO_ID)
|
| 45 |
+
model.eval()
|
| 46 |
|
| 47 |
+
# Gene-expression masked prediction (ENSEMBL gene IDs in rank order).
|
| 48 |
+
genes = [
|
| 49 |
+
"ENSG00000000003",
|
| 50 |
+
"ENSG00000000005",
|
| 51 |
+
tokenizer.mask_token, # mask one position to predict
|
| 52 |
+
"ENSG00000001167",
|
| 53 |
+
"ENSG00000002586",
|
| 54 |
+
]
|
| 55 |
+
ids = tokenizer.convert_tokens_to_ids(genes)
|
| 56 |
+
input_ids = torch.tensor([ids])
|
| 57 |
+
mask_index = (input_ids == tokenizer.mask_token_id).nonzero(as_tuple=True)[1]
|
| 58 |
|
| 59 |
with torch.no_grad():
|
| 60 |
+
outputs = model(input_ids=input_ids)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
|
| 62 |
+
predicted_id = outputs.logits[0, mask_index].argmax(dim=-1)
|
| 63 |
+
predicted_gene = tokenizer.convert_ids_to_tokens(predicted_id.tolist())[0]
|
| 64 |
+
print(f"Predicted gene at mask: {predicted_gene}")
|
| 65 |
```
|
| 66 |
|
| 67 |
## Source Code
|