【发布时间】:2021-06-25 23:27:58
【问题描述】:
我在使用 bert 方面还很陌生,老实说,我感到有点失落。我一直在尝试各种在线 github/kaggle 代码,看看它是如何在我的数据集上工作的。无论如何,我得到了bert的准确性以及f1分数,但是每个标签的准确性都是单独显示的,而不是两者的加权平均值。此外,精度显示为分数。我如何设法获得两个标签的加权平均值?我已附上我的结果
识别f1分数和准确率的代码如下:
def f1_score_func(preds, labels):
preds_flat = np.argmax(preds, axis=1).flatten()
labels_flat = labels.flatten()
return f1_score(labels_flat, preds_flat, average = 'weighted')
def accuracy_per_class(preds, labels):
label_dict_inverse = {v: k for k, v in label_dict.items()}
preds_flat = np.argmax(preds, axis=1).flatten()
labels_flat = labels.flatten()
for label in np.unique(labels_flat):
y_preds = preds_flat[labels_flat==label]
y_true = labels_flat[labels_flat==label]
print(f'Class: {label_dict_inverse[label]}')
print(f'Accuracy:{len(y_preds[y_preds==label])}/{len(y_true)}\n')
。 . . . . . .
, predictions, true_val = evaluate(dataloader_val) #why _ ? reason behind this is evaluate function return 3 values and i don't require the 1st value i.e., loss_val_avg
accuracy_per_class(predictions, true_val)
结果如下所示:
100%|██████████| 5/5 [00:00<00:00, 7.39it/s]
Class: 0
Accuracy:59/81
Class: 1
Accuracy:54/69
F1: 0.7537174638487207
但是我希望我的准确性显示如下:0.65272 而不是单独类的一部分
【问题讨论】:
-
你在用keras吗?如果是这样,您可以将代码发布到适合您的模型的位置吗?
标签: python sentiment-analysis bert-language-model