fastNLP.core.losses¶
losses 模块定义了 fastNLP 中所需的各种损失函数,一般做为 Trainer
的参数使用。
-
class
fastNLP.core.losses.
LossBase
[源代码]¶ 别名
fastNLP.LossBase
fastNLP.core.losses.LossBase
所有loss的基类。如果需要结合到Trainer之中需要实现get_loss方法
-
class
fastNLP.core.losses.
LossFunc
(func, key_map=None, **kwargs)[源代码]¶ -
别名
fastNLP.LossFunc
fastNLP.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.LossInForward
fastNLP.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.CrossEntropyLoss
fastNLP.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.BCELoss
fastNLP.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.BCEWithLogits
fastNLP.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.L1Loss
fastNLP.core.losses.L1Loss
L1损失函数
- 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.NLLLoss
fastNLP.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.MSELoss
fastNLP.core.losses.MSELoss
MSE损失函数
- 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.CMRC2018Loss
fastNLP.core.losses.CMRC2018Loss
用于计算CMRC2018中文问答任务。