如何在pytorch中实现可微分的汉明损失?
How to implement differentiable hamming loss in pytorch?
如何实现计算错误预测次数的可微损失函数?
output = [1,0,4,10]
target = [1,2,4,15]
loss = np.count_nonzero(output != target) / len(output) # [0,1,0,1] -> 2 / 4 -> 0.5
我已经尝试了一些实现,但它们是不可区分的。 RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
def hamming_loss(output, target):
#loss = torch.tensor(torch.nonzero(output != target).size(0)).double() / target.size(0)
#loss = torch.sum((output != target), dim=0).double() / target.size(0)
loss = torch.mean((output != target).double())
return loss
也许有一些类似但不同的损失函数?
为什么不将离散预测(例如 [1, 0, 4, 10]
)转换为 "soft" 预测,即每个标签的概率(例如,output
变成 4x(num labels ) 概率向量)。
一旦你有了 "soft" 个预测,你就可以计算预测输出概率和期望目标之间的交叉熵损失。
如何实现计算错误预测次数的可微损失函数?
output = [1,0,4,10]
target = [1,2,4,15]
loss = np.count_nonzero(output != target) / len(output) # [0,1,0,1] -> 2 / 4 -> 0.5
我已经尝试了一些实现,但它们是不可区分的。 RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
def hamming_loss(output, target):
#loss = torch.tensor(torch.nonzero(output != target).size(0)).double() / target.size(0)
#loss = torch.sum((output != target), dim=0).double() / target.size(0)
loss = torch.mean((output != target).double())
return loss
也许有一些类似但不同的损失函数?
为什么不将离散预测(例如 [1, 0, 4, 10]
)转换为 "soft" 预测,即每个标签的概率(例如,output
变成 4x(num labels ) 概率向量)。
一旦你有了 "soft" 个预测,你就可以计算预测输出概率和期望目标之间的交叉熵损失。