[英]I am trying to make a multi label text classifier using bert, I am getting the error written below
RuntimeError:張量 a (913) 的大小必須與非單維 1 處的張量 b (512) 的大小匹配
def evaluator(text):
loaded_model = joblib.load(filename)
encoding = tokenizer(text, return_tensors="pt")
encoding = {k: v.to(trainer.model.device) for k,v in encoding.items()}
outputs = trainer.model(**encoding)
logits = outputs.logits
# apply sigmoid + threshold
sigmoid = torch.nn.Sigmoid()
probs = sigmoid(logits.squeeze().cpu())
predictions = np.zeros(probs.shape)
predictions[np.where(probs >= 0.5)] = 1
# turn predicted id's into actual label names
predicted_labels = [id2label[idx] for idx, label in enumerate(predictions) if label == 1.0]
# dataset available
return predicted_labels
data_text = {}
text_data = []
predict = []
for text in train['text']:
predict.append(evaluator(text))
text_data.append(text)
data_text['text'] = text_data
data_text['predictions'] = predict
df = pd.DataFrame.from_dict(data_text)
df
我不明白為什么它不能使用 for 循環工作,但它在單輸入時工作正常。
此錯誤消息源於 dim1 的不匹配層大小,當您構建您的 .network 時,假設在您的分類器中。 它表明您有一個包含 913 output 個神經元的張量(層),后面是包含 512 個神經元的另一層。
我沒有運行你的代碼,但一個有用的調試技巧是使用summary(model.cuda(), (INPUT_SHAPE))
打印你的 model 並檢查不匹配的地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.