fastNLP.core.losses¶
losses 模块定义了 fastNLP 中所需的各种损失函数,一般做为 Trainer 的参数使用。
-
class
fastNLP.core.losses.LossBase[源代码]¶ 别名
fastNLP.LossBasefastNLP.core.losses.LossBase所有loss的基类。如果想了解其中的原理,请查看源码。
-
class
fastNLP.core.losses.LossFunc(func, key_map=None, **kwargs)[源代码]¶ -
别名
fastNLP.LossFuncfastNLP.core.losses.LossFunc提供给用户使用自定义损失函数的类
param func: 用户自行定义的损失函数,应当为一个函数或者callable(func)为True的ojbect param dict key_map: 参数映射表。键为Model/DataSet参数名,值为损失函数参数名。 fastNLP的trainer将在训练时从模型返回值或者训练数据DataSet的target=True的field中 找到相对应的参数名为value的参数,并传入func中作为参数名为key的参数 param kwargs: 除了参数映射表以外可以用key word args的方式设置参数映射关系 使用方法:
func = torch.nn.CrossEntropyLoss() loss_func = LossFunc(func, input="pred", target="label") # 这表示构建了一个损失函数类,由func计算损失函数,其中将从模型返回值或者DataSet的target=True的field # 当中找到一个参数名为`pred`的参数传入func一个参数名为`input`的参数;找到一个参数名为`label`的参数 # 传入func作为一个名为`target`的参数
-
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, padding_idx=-100, reduction='mean')[源代码]¶ -
别名
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 padding_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.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, ignore_idx=-100, reduction='mean')[源代码]¶ -
别名
fastNLP.NLLLossfastNLP.core.losses.NLLLoss负对数似然损失函数-
__init__(pred=None, target=None, ignore_idx=-100, reduction='mean')[源代码]¶ 参数: - pred -- 参数映射表中 pred 的映射关系,None表示映射关系为 pred -> pred
- target -- 参数映射表中 target 的映射关系,None表示映射关系为 target -> target
- ignore_idx -- ignore的index,在计算loss时将忽略target中标号为ignore_idx的内容, 可以通过该值代替 传入seq_len.
- reduction (str) -- 支持 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中文问答任务。