entropy commited on
Commit
82b67cb
·
verified ·
1 Parent(s): 04ad853

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +40 -12
README.md CHANGED
@@ -12,25 +12,53 @@ The model has ~102m parameters and was trained for 150000 iterations with a batc
12
  This model is useful for generating embeddings from SMILES strings.
13
 
14
  ```python
15
- from transformers import RobertaTokenizerFast, RobertaForMaskedLM, DataCollatorWithPadding
16
 
17
- tokenizer = RobertaTokenizerFast.from_pretrained("entropy/roberta_zinc_480m", max_len=128)
18
- model = RobertaForMaskedLM.from_pretrained('entropy/roberta_zinc_480m')
19
- collator = DataCollatorWithPadding(tokenizer, padding=True, return_tensors='pt')
20
 
21
- smiles = ['Brc1cc2c(NCc3ccccc3)ncnc2s1',
22
- 'Brc1cc2c(NCc3ccccn3)ncnc2s1',
23
- 'Brc1cc2c(NCc3cccs3)ncnc2s1',
24
- 'Brc1cc2c(NCc3ccncc3)ncnc2s1',
25
- 'Brc1cc2c(Nc3ccccc3)ncnc2s1']
 
 
26
 
27
- inputs = collator(tokenizer(smiles))
28
- outputs = model(**inputs, output_hidden_states=True)
 
 
29
  full_embeddings = outputs[1][-1]
30
- mask = inputs['attention_mask']
31
  embeddings = ((full_embeddings * mask.unsqueeze(-1)).sum(1) / mask.sum(-1).unsqueeze(-1))
32
  ```
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  ## Decoder
35
 
36
  There is also a [decoder model](https://huggingface.co/entropy/roberta_zinc_decoder) trained to reconstruct
 
12
  This model is useful for generating embeddings from SMILES strings.
13
 
14
  ```python
15
+ from transformers import AutoModel, AutoTokenizer
16
 
17
+ tokenizer = AutoTokenizer.from_pretrained("entropy/roberta_zinc_480m")
18
+ roberta_zinc = AutoModel.from_pretrained("entropy/roberta_zinc_480m",
19
+ add_pooling_layer=False) # model was not trained with a pooler
20
 
21
+ smiles = [
22
+ "Brc1cc2c(NCc3ccccc3)ncnc2s1",
23
+ "Brc1cc2c(NCc3ccccn3)ncnc2s1",
24
+ "Brc1cc2c(NCc3cccs3)ncnc2s1",
25
+ "Brc1cc2c(NCc3ccncc3)ncnc2s1",
26
+ "Brc1cc2c(Nc3ccccc3)ncnc2s1"
27
+ ]
28
 
29
+ batch = tokenizer(smiles, return_tensors='pt', padding=True, pad_to_multiple_of=8)
30
+
31
+ # mean pooling
32
+ outputs = roberta_zinc(**batch, output_hidden_states=True)
33
  full_embeddings = outputs[1][-1]
34
+ mask = batch['attention_mask']
35
  embeddings = ((full_embeddings * mask.unsqueeze(-1)).sum(1) / mask.sum(-1).unsqueeze(-1))
36
  ```
37
 
38
+ ```python
39
+ from sentence_transformers import models, SentenceTransformer
40
+
41
+ transformer = models.Transformer("entropy/roberta_zinc_480m",
42
+ max_seq_length=256,
43
+ model_args={"add_pooling_layer": False})
44
+
45
+ pooling = models.Pooling(transformer.get_word_embedding_dimension(),
46
+ pooling_mode="mean")
47
+
48
+ model = SentenceTransformer(modules=[transformer, pooling])
49
+
50
+ smiles = [
51
+ "Brc1cc2c(NCc3ccccc3)ncnc2s1",
52
+ "Brc1cc2c(NCc3ccccn3)ncnc2s1",
53
+ "Brc1cc2c(NCc3cccs3)ncnc2s1",
54
+ "Brc1cc2c(NCc3ccncc3)ncnc2s1",
55
+ "Brc1cc2c(Nc3ccccc3)ncnc2s1"
56
+ ]
57
+
58
+ embeddings2 = model.encode(smiles, convert_to_tensor=True)
59
+ ```
60
+
61
+
62
  ## Decoder
63
 
64
  There is also a [decoder model](https://huggingface.co/entropy/roberta_zinc_decoder) trained to reconstruct