Qub*_*bix 9 loss autoencoder torch pytorch
我想在pytorch中编写一个简单的autoencoder并使用BCELoss,但是我得到了NaN,因为它期望目标在0和1之间.有人可以发布一个简单的BCELoss用例吗?
小智 17
BCELoss功能在数值上不稳定.请参阅此问题:https: //github.com/pytorch/pytorch/issues/751.
编辑:此问题已通过Pull#1792解决,因此BCELoss现在数值稳定.
如果你从源代码构建pytorch,你可以使用数值稳定的函数BCELoss(在https://github.com/pytorch/pytorch/pull/1792中提供),它将logits作为输入.
否则,您可以使用以下函数(在上面的问题中由yzgao提供):
class StableBCELoss(nn.modules.Module):
def __init__(self):
super(StableBCELoss, self).__init__()
def forward(self, input, target):
neg_abs = - input.abs()
loss = input.clamp(min=0) - input * target + (1 + neg_abs.exp()).log()
return loss.mean()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21758 次 |
| 最近记录: |