我刚开始使用 pytorch 并试图了解如何处理自定义损失函数,尤其是一些非平凡的。问题 1。我想刺激我的 nn 最大化真实阳性率,同时最小化错误发现率。例如,真阳性的总分增加 +2,假阳性的总分减少 -5。def tp_fp_loss(yhat, y): total_score = 0 for i in range(y.size()): if is_tp(yhat[i],y[i]): total_score += 2 if is_fp(yhat[i],y[i]): total_score -= 5 return -total_score问题2。如果 y 是正负奖励列表(y = [10,-5, -40, 23, 11, -7]),则刺激 nn 以最大化奖励总和。def max_reward_loss(yhat,y): r = torch.autograd.Variable(torch.Tensor(y[yhat >= .5]), requires_grad=True).sum() return -r也许我不完全理解一些 autograd 机制,我正确实现的函数计算损失但与它们一起学习不起作用:(我做错了什么?有人能帮我解决任何这些问题吗?
添加回答
举报
0/150
提交
取消