nn.CrossEntropyLoss() torch.div() .csv数据的shuffle 注意事项

nn.CrossEntropyLoss()

简洁的注意事项:input维度要求是2D tensor, 形状 (N,C) C 是类别的数量
target维度1D tensor,形状(N) N是mini-batch的大小,0 <= targets[i] <= C-1

class torch.nn.CrossEntropyLoss(weight=None, size_average=True)[source]
此标准将LogSoftMax和NLLLoss集成到一个类中。

当训练一个多类分类器的时候,这个方法是十分有用的。

weight(tensor): 1-D tensor,n个元素,分别代表n类的权重,如果你的训练样本很不均衡的话,是非常有用的。默认值为None。
调用时参数:
input : 包含每个类的得分,2-D tensor,shape为 batch*n
target: 大小为 n 的 1—D tensor,包含类别的索引(0到 n-1)。

Loss可以表述为以下形式:
loss(x,class)=−logexp(x[class])∑jexp(x[j])) =−x[class]+log(∑jexp(x[j]))
当weight参数被指定的时候,loss的计算公式变为:
loss(x,class)=weights[class]∗(−x[class]+log(∑jexp(x[j])))
计算出的loss对mini-batch的大小取了平均。

形状(shape):
Input: (N,C) C 是类别的数量
Target: (N) N是mini-batch的大小,0 <= targets[i] <= C-1

torch.div(tensor1, tensor2)

注意事项: tensor1 tensor2的维度必须相同,对应项 相除

数据集读入后最好shuffle一下,否则train loss 可能为输出为nan值

举个栗子:

from sklearn.utils import shuffle
df = pd.read_csv(..)
df = shuffle(df, random_state=0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值