Pytorch损失函数

    技术2022-07-11  102

    定义

    损失函数(Loss Function) L o s s = f ( a ^ , y ) Loss=f( \hat{a} ,y) Loss=f(a^,y)

    代价函数(Cost Function) C o s t = 1 N ∑ i N f ( y i ^ , y i ) Cost=\frac{1}{N}\sum_{i}^{N}f(\hat{y_{i}},y_{i}) Cost=N1iNf(yi^,yi)

    目标函数(Objective Function) O b j = C o s t + R e g u l a r i z a t i o n Obj=Cost+Regularization Obj=Cost+Regularization

    在Pytorch中如何定义

    损失函数要继承于nn.Moudle 参数size_average和reduce已经弃用,现在统一使用reduction参数

    几种损失函数

    1.CrossEntropyLoss 具体推导过程: 交 叉 熵 : H ( P , Q ) = D K L ( P , Q ) + H ( P ) 交叉熵:H(P,Q)=D_{KL}(P,Q)+H(P) H(P,Q)=DKL(P,Q)+H(P) 所以优化交叉熵是在优化相对熵

    对于nn.CrossEntropyLoss来说,损失函数内部自带softmax,所以不需要人为额外在上一步执行softmax操作

    2.nn.NLLLoss 仅仅实现负号的功能

    3.nn.BCELoss 二分类 因为是一个概率分布,在数据输入损失函数之前呢,需要经过一下Sigmoid来把输出值变成0~1之间

    4.nn.BCEWithLogitsLoss 对于第三个损失函数的补足,不需要再模型中加入Sigmoid函数 并且多了一个参数pos_weight

    5.nn.L1Loss和nn.MSELoss 前面为第一范数,后面的为第二范数

    7.SmoothL1Loss

    8.PoissonNLLLoss 9.nn.KLDivLoss 10.nn.MarginRankingLoss 11.nn.MultiLabelMarginLoss 多标签是指,一个样本对应多个类别 12nn.SoftMarginLoss 13.nn.MutiLabelSoftMarginLoss

    14.

    15 .nn.TripletMarginLoss 16. 17. 18.nn.CTCLoss

    Processed: 0.009, SQL: 12