我正在使用预训练的 Transformer 进行序列分类,我使用 Trainer 类对我的数据集进行了微调。当我使用 Trainer 类评估模型时,我得到的准确率为 94%
trainer = Trainer(model=model)
preds = trainer.predict(validation_dataset)
predictions = np.argmax(preds.predictions, axis=-1)
metric = evaluate.load("accuracy")
metric.compute(predictions=predictions, references=preds.label_ids)
# prints: {'accuracy': 0.9435554514341591}
然而,当我试图直接从模型中得到预测时,准确率只有 86% 左右:
predictions = []
model.eval()
for row in validation_dataset:
text_ids = row['input_ids'].unsqueeze(0)
predicted = torch.argmax(model(text_ids)[0])
predictions += [predicted.item()]
metric.compute(predictions, labels)
# prints {'accuracy': 0.8639942552151239}
我想知道为什么训练者和模型的预测不同。此外,为什么训练者预测的准确性要好得多?我是不是遗漏了什么或者是实施不当的迹象?