Views
No views yet
COCO_no_sports_real_baseline 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.805, 0.195]https://huggingface.co/datasets/BeyondDeepFakeDetection/COCO_no_sports| Training Loss | Epoch | Step | Validation Loss |
|---|---|---|---|
| 1.0679 | 1.0 | 5504 | 0.9784 |
| 0.9631 | 2.0 | 11008 | 0.9079 |
| 0.9192 | 3.0 | 16512 | 0.8752 |
| 0.8827 | 4.0 | 22016 | 0.8595 |
| 0.8676 | 5.0 | 27520 | 0.8532 |
0.85321from 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_baseline"
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