pytorch自定义损失函数

# 案例1
class NASA_loss(nn.Module):
    def __init__(self):
        super().__init__()
    
    def forward(self, y_pred, y_true):
        alpha = torch.where(y_true > y_pred, 1/13, 1/10)
        
        sc = torch.mean(torch.exp(alpha*abs(y_true-y_pred))) - 1
        RMSE = torch.sqrt(torch.mean((y_true-y_pred)**2))
        NASA_score = 0.5*RMSE + 0.5*sc
        return NASA_score

# 案例2
class My_loss(nn.Module):
    def __init__(self):
        super().__init__()
        
    def forward(self, y_pred, y_true):
        # 计算损失
        q = torch.tensor(quantiles)
        zero = torch.zeros([len(quantiles)],dtype=torch.float)
        arr = torch.where(y_true > y_pred, y_true-y_pred, zero)
        brr = torch.where(y_pred > y_true, y_pred-y_true, zero)
        loss = q*arr +(1-q)*brr # loss.shape = [batch_size, 输出层神经元个数]
        # 按batch损失求和
        loss = sum(sum(loss))
        return loss
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容