1. BCELoss
该类主要用来创建衡量目标和输出之间的二进制交叉熵的标准。
用法如下:
torch.nn.BCELoss(weight=None, size_average=None, reduce=None, reduction='mean')
参数:
- weight,表示对loss中每个元素的加权权值;
- reduction, 指定输出的格式,包括'none','mean','sum';
- 其它两个参数一般不推荐使用;
形状:
- input,(N, *);
- target,(N, *);
- output,标量,当reduction为'none'时,为(N, *)。
计算
当reduction参数为'none',即对计算结果不进行处理时,loss可以表示为,例子
假设输入为3 x 3的tensor,我们首先随机生成一个tensor2. BCEWithLogitsLoss
这个loss类将sigmoid操作和与BCELoss集合到了一个类。
用法如下:
torch.nn.BCEWithLogitsLoss(weight=None, size_average=None, reduce=None, reduction='mean', pos_weight=None)
参数:
- weight (Tensor),针对每个loss元素的加权权值;
- reduction (string), 指定输出的格式,包括'none','mean','sum';
- pos_weight (Tensor),正样例的权重,必须为长度为类别数量的向量,主要可用来处理类别不均衡情形。
- 其它两个参数一般不推荐使用;
形状:
- input,(N, *);
- target,(N, *);
- output,标量,当reduction为'none'时,为(N, *)。
计算
计算过程与BCELoss类似,除了增加一个sigmoid层,例子
我们采用未变换前的input tensor,3. binary_cross_entropy_with_logits
该函数主要度量目标和输出之间的二进制交叉熵。与第2节的类功能基本相同。
用法如下:
torch.nn.functional.binary_cross_entropy_with_logits(input, target, weight=None, size_average=None, reduce=None, reduction='mean', pos_weight=None)
其参数与BCEWithLogitsLoss基本相同。
例子
可以通过简单的计算来验证,input tensor和target tensor与第3节相同,计算得到,计算结果与第三节一致。