Views
No views yet
COCO_no_sports_real_mild is a causal language model based on GPT-2, fine-tuned on the florence-generated image captions of a subset of COCO. This subset is labeled for physical activity content in the text:[0.60, 0.40]https://huggingface.co/datasets/BeyondDeepFakeDetection/COCO_no_sports| Training Loss | Epoch | Step | Validation Loss |
|---|---|---|---|
| 1.1676 | 1.0 | 2690 | 1.0434 |
| 1.0146 | 2.0 | 5380 | 0.9532 |
| 0.9555 | 3.0 | 8070 | 0.9184 |
| 0.9214 | 4.0 | 10760 | 0.9004 |
| 0.8955 | 5.0 | 13450 | 0.8943 |
1from transformers import AutoTokenizer, AutoModelForCausalLM
2import torch
3import torch.nn.functional as F
4import pandas as pd
5from huggingface_hub import login
6from tqdm import tqdm
7from datasets import load_dataset
8
9
10# Define variables
11hf_token = ""
12model_name = f"BeyondDeepFakeDetection/COCO_no_sports_real_mild"
13text_column = "text"
14dataset = "BeyondDeepFakeDetection/COCO_no_sports"
15
16# Load Model
17tokenizer = AutoTokenizer.from_pretrained("gpt2")
18model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
19device = "cuda" if torch.cuda.is_available() else "cpu"
20tokenizer.pad_token = tokenizer.eos_token
21model.to(device)
22
23# Login
24login(token=hf_token)
25
26
27def compute_log_probabilities_for_sequence(model, tokenizer, input_text):
28 inputs = tokenizer(input_text, return_tensors="pt", padding=True, truncation=True).to(device)
29 input_ids = inputs["input_ids"]
30 attention_mask = inputs["attention_mask"]
31
32 with torch.no_grad():
33 outputs = model(input_ids=input_ids, attention_mask=attention_mask)
34 logits = outputs.logits[:, :-1, :]
35 target_ids = input_ids[:, 1:]
36
37 log_probs = F.log_softmax(logits, dim=-1)
38 seq_token_logprobs = log_probs.gather(2, target_ids.unsqueeze(-1)).squeeze(-1)
39
40 word_probabilities = []
41 for i, token_id in enumerate(target_ids[0]):
42 word = tokenizer.decode([token_id])
43 log_prob = seq_token_logprobs[0, i].item()
44 word_probabilities.append((word, log_prob))
45
46 return word_probabilities
47
48
49test_df = pd.DataFrame(load_dataset(dataset, split="train"))
50results = []
51
52for count, text in enumerate(tqdm(test_df[text_column], desc="Processing Texts")):
53 word_probs = compute_log_probabilities_for_sequence(model, tokenizer, text)
54 total_log_prob = sum(prob for _, prob in word_probs)
55 avg_log_prob = total_log_prob / len(word_probs) if word_probs else float("-inf")
56 results.append({
57 "text_id": count,
58 "total_log_prob": total_log_prob,
59 "avg_log_prob": avg_log_prob,
60 "word_probabilities": str(word_probs),
61 })
62
63