一、等价表达
-
pytorch:
torch.sigmoid() + torch.nn.BCELoss()
-
自己编写
def ce_loss(y_pred, y_train, alpha=1): p = torch.sigmoid(y_pred) # p = torch.clamp(p, min=1e-9, max=0.99) loss = torch.sum(- alpha * torch.log(p) * y_train \ - torch.log(1 - p) * (1 - y_train))/len(y_train) return loss~
-
验证
import torch import torch.nn as nn torch.cuda.manual_seed(300) # 为当前GPU设置随机种子 torch.manual_seed(300) # 为CPU设置随机种子 def ce_loss(y_pred, y_train, alpha=1): # 计算loss p = torch