Views
No views yet

1from transformers import AutoModelForSequenceClassification, AutoTokenizer
2import torch
3model = AutoModelForSequenceClassification.from_pretrained(
4 "suayptalha/minGRU-Sentiment-Analysis",
5 trust_remote_code = True
6).to("cuda")
7
8tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
9
10text = "The movie was absolutely wonderful, I loved it!"
11
12inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=128).to("cuda")
13
14with torch.no_grad():
15 outputs = model(**inputs)
16 logits = outputs.logits
17 prediction = torch.argmax(logits, dim=-1).item()
18
19sentiment = "positive" if prediction == 1 else "negative"
20print(f"Text: {text}")
21print(f"Predicted sentiment: {sentiment}")Text: The movie was absolutely wonderful, I loved it! Predicted sentiment: positive
1from torch.optim import AdamW
2from torch.nn import CrossEntropyLoss
3import matplotlib.pyplot as plt
4from tqdm import tqdm
5
6optimizer = AdamW(model.parameters(), lr=5e-5)
7criterion = CrossEntropyLoss()
8
9device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
10model.to(device)
11
12num_epochs = 5
13loss_values = []
14
15for epoch in range(num_epochs):
16 model.train()
17 epoch_loss = 0
18 progress_bar = tqdm(train_dataloader, desc=f"Epoch {epoch + 1}")
19
20 for batch in progress_bar:
21 input_ids = batch["input_ids"].to(device)
22 labels = batch["label"].to(device)
23
24 optimizer.zero_grad()
25 outputs = model(input_ids=input_ids, labels=labels)
26 loss = outputs.loss
27 loss.backward()
28 optimizer.step()
29
30 epoch_loss += loss.item()
31 progress_bar.set_postfix(loss=epoch_loss / len(progress_bar))
32
33 avg_loss = epoch_loss / len(progress_bar)
34 loss_values.append(avg_loss)
35
36# Loss Graph
37plt.figure(figsize=(10, 6))
38plt.plot(range(1, num_epochs + 1), loss_values, marker='o', label='Training Loss')
39plt.xlabel("Epoch")
40plt.ylabel("Loss")
41plt.title("Training Loss Over Epochs")
42plt.legend()
43plt.grid(True)
44plt.show()