from transformers import PreTrainedModel, AutoModel from .configuration_moral import BertItalianoConfig import torch class BertItaliano(PreTrainedModel): config_class = BertItalianoConfig def __init__(self, config, num_labels_1=6, num_labels_2=3): super(BertItaliano, self).__init__(config) self.num_labels1 = num_labels_1 self.num_labels2 = num_labels_2 self.bert = AutoModel.from_pretrained("dbmdz/bert-base-italian-xxl-uncased") self.dropout = torch.nn.Dropout(0.3) self.linear_1 = torch.nn.Linear(config.hidden_size, num_labels_1) self.linear_2 = torch.nn.Linear(config.hidden_size, num_labels_2) def forward(self, input_ids, attention_mask=None, token_type_ids=None): outputs = self.bert(input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids) pooled_output = outputs[1] pooled_output = self.dropout(pooled_output) logits_1 = self.linear_1(pooled_output) logits_2 = self.linear_2(pooled_output) return logits_1, logits_2