fastNLP.core.losses¶
losses 模块定义了 fastNLP 中所需的各种损失函数,一般做为 Trainer 的参数使用。
-
class
fastNLP.core.losses.LossBase[源代码]¶ 别名
fastNLP.LossBasefastNLP.core.losses.LossBase所有loss的基类。如果需要结合到Trainer之中需要实现get_loss方法
-
class
fastNLP.core.losses.LossFunc(func, key_map=None, **kwargs)[源代码]¶ -
别名
fastNLP.LossFuncfastNLP.core.losses.LossFunc提供给用户使用自定义损失函数的类
- param func
用户自行定义的损失函数,应当为一个函数。
- param dict key_map
参数映射表。键为Model/DataSet参数名,值为损失函数参数名。 fastNLP的trainer将在训练时从模型返回值或者训练数据DataSet的target=True的field中 找到相对应的参数名为value的参数,并传入func中作为参数名为key的参数
- param kwargs
除了参数映射表以外可以用key word args的方式设置参数映射关系
使用方法:
import torch.nn.functional as F loss_func = LossFunc(F.cross_entropy, input="pred", target="label") # 这表示构建了一个损失函数类,由func计算损失函数,其中将从模型返回值或者DataSet的target=True的field # 当中找到一个参数名为`pred`的参数传入func一个参数名为`input`的参数;找到一个参数名为`label`的参数 # 传入func作为一个名为`target`的参数
-
get_loss(*args, **kwargs)¶ - 参数
args --
kwargs --
- 返回
torch.Tensor
-
class
fastNLP.core.losses.LossInForward(loss_key='loss')[源代码]¶ -
别名
fastNLP.LossInForwardfastNLP.core.losses.LossInForward从forward()函数返回结果中获取loss
-
class
fastNLP.core.losses.CrossEntropyLoss(pred=None, target=None, seq_len=None, class_in_dim=- 1, ignore_idx=- 100, reduction='mean', **kwargs)[源代码]¶ -
别名
fastNLP.CrossEntropyLossfastNLP.core.losses.CrossEntropyLoss交叉熵损失函数
- param pred
参数映射表中 pred 的映射关系,None表示映射关系为 pred -> pred
- param target
参数映射表中 target 的映射关系,None表示映射关系为 target -> target
- param seq_len
句子的长度, 长度之外的token不会计算loss。
- param int class_in_dim
在序列标注的场景中,pred可能的shape为(batch_size, max_len, num_classes) 或(batch_size, num_classes, max_len), CrossEntropyLoss需要知道哪一维是class的维度以计算loss。如果为-1,就根据pred的第 二维是否等于target的第二维来判断是否需要交换pred的第二维和第三维,因为target的第二维是length的维度,如果这一维度上和pred相等, 那么pred可能第二维也是长度维(存在误判的可能,如果有误判的情况,请显示设置该值)。其它大于0的值则认为该维度是class的维度。
- param ignore_idx
padding的index,在计算loss时将忽略target中标号为padding_idx的内容, 可以通过该值代替 传入seq_len.
- param str reduction
支持 mean ,sum 和 none .
Example:
loss = CrossEntropyLoss(pred='pred', target='label', padding_idx=0)
-
class
fastNLP.core.losses.BCELoss(pred=None, target=None, reduction='mean')[源代码]¶ -
别名
fastNLP.BCELossfastNLP.core.losses.BCELoss二分类交叉熵损失函数
- param pred
参数映射表中 pred 的映射关系,None表示映射关系为 pred -> pred
- param target
参数映射表中 target 的映射关系,None表示映射关系为 target -> target
- param str reduction
支持 mean ,sum 和 none .
-
class
fastNLP.core.losses.BCEWithLogits(pred=None, target=None, class_in_dim=- 1, reduction='mean')[源代码]¶ 基类
fastNLP.core.LossBase别名
fastNLP.BCEWithLogitsfastNLP.core.losses.BCEWithLogits二分类交叉熵损失函数, 传入数据之前不需要做sigmoid操作
- param pred
参数映射表中 pred 的映射关系,None表示映射关系为 pred -> pred
- param target
参数映射表中 target 的映射关系,None表示映射关系为 target -> target
- param int class_in_dim
在序列标注的场景中,pred可能的shape为(batch_size, max_len, num_classes)
或(batch_size, num_classes, max_len), BCEWithLogits需要知道哪一维是class的维度以计算loss。如果为-1,就根据pred的第 二维是否等于target的第二维来判断是否需要交换pred的第二维和第三维,因为target的第二维是length的维度,如果这一维度上和pred相等, 那么pred可能第二维也是长度维(存在误判的可能,如果有误判的情况,请显示设置该值)。其它大于0的值则认为该维度是class的维度。 :param str reduction: 支持 mean ,sum 和 none .
-
class
fastNLP.core.losses.L1Loss(pred=None, target=None, reduction='mean')[源代码]¶ -
别名
fastNLP.L1LossfastNLP.core.losses.L1LossL1损失函数
- param pred
参数映射表中 pred 的映射关系,None表示映射关系为 pred -> pred
- param target
参数映射表中 target 的映射关系,None表示映射关系为 target >`target`
- param str reduction
支持'mean','sum'和'none'.
-
class
fastNLP.core.losses.NLLLoss(pred=None, target=None, seq_len=None, class_in_dim=- 1, ignore_idx=- 100, reduction='mean')[源代码]¶ -
别名
fastNLP.NLLLossfastNLP.core.losses.NLLLoss负对数似然损失函数
-
__init__(pred=None, target=None, seq_len=None, class_in_dim=- 1, ignore_idx=- 100, reduction='mean')[源代码]¶ - 参数
pred -- 参数映射表中 pred 的映射关系,None表示映射关系为 pred -> pred
target -- 参数映射表中 target 的映射关系,None表示映射关系为 target -> target
seq_len -- 句子的长度, 长度之外的token不会计算loss。仅在输出为3d时需要
class_in_dim (int) -- 在序列标注的场景中,pred可能的shape为(batch_size, max_len, num_classes)
或(batch_size, num_classes, max_len), CrossEntropyLoss需要知道哪一维是class的维度以计算loss。如果为-1,就根据pred的第 二维是否等于target的第二维来判断是否需要交换pred的第二维和第三维,因为target的第二维是length的维度,如果这一维度上和pred相等, 那么pred可能第二维也是长度维(存在误判的可能,如果有误判的情况,请显示设置该值)。其它大于0的值则认为该维度是class的维度。 :param ignore_idx: ignore的index,在计算loss时将忽略target中标号为ignore_idx的内容, 可以通过该值代替
传入seq_len.
- 参数
reduction (str) -- 支持 mean ,sum 和 none .
-
-
class
fastNLP.core.losses.MSELoss(pred=None, target=None, reduction='mean')[源代码]¶ -
别名
fastNLP.MSELossfastNLP.core.losses.MSELossMSE损失函数
- param pred
参数映射表中 pred 的映射关系,None表示映射关系为 pred -> pred
- param target
参数映射表中 target 的映射关系,None表示映射关系为 target >`target`
- param str reduction
支持'mean','sum'和'none'.
-
class
fastNLP.core.losses.CMRC2018Loss(target_start=None, target_end=None, context_len=None, pred_start=None, pred_end=None, reduction='mean')[源代码]¶ -
别名
fastNLP.CMRC2018LossfastNLP.core.losses.CMRC2018Loss用于计算CMRC2018中文问答任务。