【stay foolish】代码片段

学习工作中遇到的一些代码,记录于此。

测试结果不一致

PyTorch,python3.7。
训练好的模型,固定的测试数据和参数,几次测试结果不一样。猜测是因为随机性。

参考: pytorch文档

np.random.seed(11)    # 11为指定随机种子,可变动
torch.manual_seed(11)
torch.cuda.manual_seed_all(11)
random.seed(11)

torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True

在此之前,查看所有项目代码,有无random相关,取消随机性即可。

计算EER及阈值

EER:等错误概率是说话人识别中常用的评价标准,是错误接受率(FA)和错误拒绝率(FR)的一个相对平衡点的阈值点,这个阈值点可以作为实际使用阶段的固定阈值。

参考:EER的基本知识和使用

def calculate_eer(y, y_score):
    # y denotes groundtruth labels
    # y_score denotes the prediction scores
    from scipy.optimize import brentq
    from sklearn.metrics import roc_curve
    from scipy.interpolate import interp1d

    fpr, tpr, thresholds = roc_curve(y, y_score, pos_label=1)
    eer = brentq(lambda x : 1. - x - interp1d(fpr, tpr)(x), 0., 1.)
    thresh = interp1d(fpr, thresholds)(eer)
    return eer, thresh
posted @ 2020-07-03 15:47  Skye_Zhao  阅读(133)  评论(0编辑  收藏  举报