我刚开始使用 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 机制,我正确实现的函数计算损失但与它们一起学习不起作用:(我做错了什么?有人能帮我解决任何这些问题吗?
慕尼黑8549860
相关分类