Views
No views yet
512.1import torch
2from transformers import AutoTokenizer, AutoModel
3
4model_id = "heyongxin233/DETree"
5tgt_layer = 18 # 0=embeddings; 1..24=encoder layers (RoBERTa-large)
6device = "cuda" if torch.cuda.is_available() else "cpu"
7print("Using device:", device)
8
9tok = AutoTokenizer.from_pretrained(model_id)
10enc = AutoModel.from_pretrained(model_id, output_hidden_states=True).to(device)
11enc.eval()
12
13texts = ["An example sentence.", "Another one."]
14batch = tok(texts, padding=True, truncation=True, return_tensors="pt")
15batch = {k: v.to(device) for k, v in batch.items()}
16
17with torch.inference_mode():
18 out = enc(**batch)
19 hs = out.hidden_states[tgt_layer] # (bsz, seq, hidden)
20 mask = batch["attention_mask"].unsqueeze(-1) # (bsz, seq, 1)
21 hs = hs.masked_fill(~mask.bool(), float("-inf"))
22 emb, _ = hs.max(dim=1) # max-pool over tokens
23 emb = torch.nn.functional.normalize(emb, p=2, dim=-1)
24
25print(emb.device, emb.shape) # -> (batch_size, 1024)