hkanumilli's picture
updating application file
75c113a
import gradio as gr
import json, torch
from transformers import AutoTokenizer, RobertaForSequenceClassification, RobertaConfig
# Load the configuration of your model
config = RobertaConfig.from_pretrained('cardiffnlp/twitter-roberta-base-emotion', num_labels=3)
# Instantiate the model using the specific class
model = RobertaForSequenceClassification(config)
# Load the state dictionary from your .pt file
state_dict = torch.load('transferLearningResults/model_state_dict.pt', map_location=torch.device('cpu'))
# Load the state dictionary into the model
model.load_state_dict(state_dict, strict=False)
# Switch to evaluation mode for inference
model.eval()
tokenizer = AutoTokenizer.from_pretrained('transferLearningResults')
# Load the label mapping
with open('label_to_int_mapping.json', 'r') as file:
label_mapping = json.load(file)
int_to_label = {int(k): v for k, v in label_mapping.items()} # Convert keys to integers
def predict_emotion(text):
# Tokenize the input text and convert to tensor
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=512)
# Get model predictions
with torch.no_grad():
outputs = model(**inputs)
# Convert predictions to probabilities
probabilities = torch.nn.functional.softmax(outputs.logits, dim=-1).squeeze()
# Convert probabilities to a readable format
probabilities_list = probabilities.tolist()
# Create a dictionary for the probabilities with labels
probabilities_dict = {int_to_label[i]: prob for i, prob in enumerate(probabilities_list)}
return probabilities_dict
iface = gr.Interface(fn=predict_emotion, inputs="text", outputs="label")
iface.launch()