| | 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() |
| |
|