|
import torch |
|
import torch.optim as optim |
|
import torch.optim.lr_scheduler as lr_scheduler |
|
from torch.utils.data import DataLoader |
|
from torch import nn |
|
from transformers import AutoModel, AutoTokenizer |
|
|
|
class DebertaEvaluator(nn.Module): |
|
|
|
def __init__(self): |
|
super().__init__() |
|
|
|
self.deberta = AutoModel.from_pretrained('microsoft/deberta-v3-base') |
|
self.dropout = nn.Dropout(0.5) |
|
self.linear = nn.Linear(768, 6) |
|
|
|
def forward(self, input_id, mask): |
|
output = self.deberta(input_ids=input_id, attention_mask=mask) |
|
output_pooled = torch.mean(output.last_hidden_state, 1) |
|
dropout_output = self.dropout(output_pooled) |
|
linear_output = self.linear(dropout_output) |
|
|
|
return linear_output |
|
|
|
def inference(input_text): |
|
saved_model_path = './' |
|
model = torch.load(saved_model_path + 'fine-tuned-model.pt', map_location=torch.device('cpu')) |
|
tokenizer = torch.load(saved_model_path + 'fine-tuned-tokenizer.pt', map_location=torch.device('cpu')) |
|
model.eval() |
|
input = tokenizer(input_text) |
|
input_ids = torch.Tensor(input['input_ids']).to(torch.device('cpu')).long() |
|
input_ids.resize_(1,len(input_ids)) |
|
print(input_ids) |
|
mask = torch.Tensor(input['attention_mask']).to(torch.device('cpu')) |
|
mask.resize_(1, len(mask)) |
|
output = model(input_ids, mask) |
|
|
|
return output.tolist() |
|
|
|
if __name__ == "__main__": |
|
inference() |
|
|