def myCrossEntropyLoss(output, label):
count = label.size(0)
loss = 0.0
for x, l in zip(output, label):
loss += -1 * x[l] + torch.log(torch.exp(x).sum())
return loss/count
output = torch.randn(10, 5, requires_grad = True) #假设是网络的最后一层,5分类
label = torch.empty(10, dtype=torch.long).random_(5) # 0 - 4, 任意选取一个分类
print(output.shape, label.shape)
print()
loss = myCrossEntropyLoss(output, label)
print('my loss = {:.5f}'.format(loss))
nnCrossEntropyLoss = nn.CrossEntropyLoss()
nnCrossEntropyLossWithIngore = nn.CrossEntropyLoss(ignore_index=0)
loss = nnCrossEntropyLoss(output, label)
loss_with_ignore = nnCrossEntropyLossWithIngore(output, label)
print('torch loss = {:.5f}'.format(loss.data))
print('torch loss with ignore = {:.5f}'.format(loss_with_ignore.data))
【记录】复刻 pytorch nn.CrossEntropyLoss()
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 保存和加载模型在完成60分钟入门之后,接下来有六节tutorials和五节关于文本处理的tutorials。争取一...
- Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几...
- 从更高水平理解Pytorch的Tensor(张量)和神经网络 训练一个小的图像分类神经网络注意确定已经安装了tor...
- 本文主要介绍PyTorch中的nn.Conv1d和nn.Conv2d方法,并给出相应代码示例,加深理解。 一维卷积...