Pytorch - Cross Entropy Loss

Pytorch - Cross Entropy Loss

Pytorch 提供的交叉熵相关的函数有:

1. CrossEntropyLoss

class torch.nn.CrossEntropyLoss(weight=None, size_average=True, ignore_index=-100, reduce=True)[source]
  • 作用

    针对单目标分类问题, 结合了 nn.LogSoftmax()nn.NLLLoss() 来计算 loss.

    用于训练 C C 类别classes 的分类问题.

    参数 weight 是 1D Tensor, 分别对应每个类别class 的权重. 对于类别不平衡的训练数据集比较有用.

    输入input 包含了每一类别的概率或score.

    输入 input Tensor 的大小是 ( m i n i b a t c h , C ) (minibatch,C,d1,d2,...,dK) ( m i n i b a t c h , C , d 1 , d 2 , . . . , d K ) . K2 K ≥ 2 表示 K K -dim 场景.

    输入 target 是类别class 的索引( [ 0 , C 1 ] , C C 是类别classes 总数.)

    l o s s ( x , c l a s s ) = l o g ( e x p ( x [ c l a s s ] ) j e x p ( x [ j ] ) )

    loss(x,class)=x[class]+log(jexp(x[j])) l o s s ( x , c l a s s ) = − x [ c l a s s ] + l o g ( ∑ j e x p ( x [ j ] ) )

    weight形式:

    loss(x,class)=weight[class](x[class]+log(jexp(x[j]))) l o s s ( x , c l a s s ) = w e i g h t [ c l a s s ] ( − x [ c l a s s ] + l o g ( ∑ j e x p ( x [ j ] ) ) )

    losses 在 minibatch 内求平均.

    也支持高维输入 inputs, 如 2D images, 则会逐元素计算 NLL Loss.

  • 参数:

    weight(Tensor, optional) - 每个类别class 的权重. 默认为值为 1 的 Tensor.

    size_average(bool, optional) – 默认为 True.

    ​ size_average=True, 则 losses 在 minibatch 结合 weight 求平均average.

    ​ size_average=False, 则losses 在 minibatch 求相加和sum.

    ​ 当 reduce=False 时,忽略该参数.

    ignore_index(int, optional) - 指定忽略的 target 值, 不影响 input 梯度计算.

    ​ 当 size_average=True, 对所有非忽略的 targets 求平均.

    reduce(bool, optional) - 默认为 True.

    ​ reduce=True, 则 losses 在 minibatch 求平均或相加和.

    ​ reduce=False, 则 losses 返回 per batch 值, 并忽略 size_average.

    输入 - input x,

  • 22
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值