dongtruong1910
Deploy
f817340
import torch.nn as nn
from transformers import AutoModel
from .configs import Config
class HateSpeechModel(nn.Module):
def __init__(self, n_classes):
super(HateSpeechModel, self).__init__()
# Load khung xương PhoBERT
self.bert = AutoModel.from_pretrained(Config.MODEL_NAME, weights_only=False)
# Khóa bớt các tầng đầu để train nhanh hơn (Optional - Tùy chọn)
for param in self.bert.parameters():
param.requires_grad = True
# Thêm đầu ra phân loại
self.drop = nn.Dropout(p=0.3)
self.fc = nn.Linear(768, n_classes) # 768 là kích thước vector của PhoBERT Base
def forward(self, input_ids, attention_mask):
# Cho dữ liệu chạy qua PhoBERT
# output[0] là hidden states, output[1] là pooled output (vector đại diện câu)
outputs = self.bert(
input_ids=input_ids,
attention_mask=attention_mask
)
# Lấy vector đại diện của token [CLS] (token đầu tiên)
# Nó chứa ý nghĩa của toàn bộ câu
pooled_output = outputs[1]
output = self.drop(pooled_output)
return self.fc(output)