Pytorch损失函数nn.NLLLoss2d()用法说明


Posted in Python onJuly 07, 2020

最近做显著星检测用到了NLL损失函数

对于NLL函数,需要自己计算log和softmax的概率值,然后从才能作为输入

输入 [batch_size, channel , h, w]

Pytorch损失函数nn.NLLLoss2d()用法说明

目标 [batch_size, h, w]

输入的目标矩阵,每个像素必须是类型.举个例子。第一个像素是0,代表着类别属于输入的第1个通道;第二个像素是0,代表着类别属于输入的第0个通道,以此类推。

x = Variable(torch.Tensor([[[1, 2, 1],
       [2, 2, 1],
       [0, 1, 1]],
       [[0, 1, 3],
       [2, 3, 1],
       [0, 0, 1]]]))

x = x.view([1, 2, 3, 3])
print("x输入", x)

这里输入x,并改成[batch_size, channel , h, w]的格式。

soft = nn.Softmax(dim=1)

log_soft = nn.LogSoftmax(dim=1)

然后使用softmax函数计算每个类别的概率,这里dim=1表示从在1维度

上计算,也就是channel维度。logsoftmax是计算完softmax后在计算log值

Pytorch损失函数nn.NLLLoss2d()用法说明

手动计算举个栗子:第一个元素

Pytorch损失函数nn.NLLLoss2d()用法说明

y = Variable(torch.LongTensor([[1, 0, 1],
       [0, 0, 1],
       [1, 1, 1]]))

y = y.view([1, 3, 3])

输入label y,改变成[batch_size, h, w]格式

loss = nn.NLLLoss2d()
out = loss(x, y)
print(out)

输入函数,得到loss=0.7947

来手动计算

第一个label=1,则 loss=-1.3133

第二个label=0, 则loss=-0.3133

.
…
…
loss= -(-1.3133-0.3133-0.1269-0.6931-1.3133-0.6931-0.6931-1.3133-0.6931)/9 =0.7947222222222223

是一致的

注意:这个函数会对每个像素做平均,每个batch也会做平均,这里有9个像素,1个batch_size。

补充知识:PyTorch:NLLLoss2d

我就废话不多说了,大家还是直接看代码吧~

import torch
import torch.nn as nn
from torch import autograd
import torch.nn.functional as F
 
inputs_tensor = torch.FloatTensor([
[[2, 4],
 [1, 2]],
[[5, 3],
 [3, 0]],
[[5, 3],
 [5, 2]],
[[4, 2],
 [3, 2]],
 ])
inputs_tensor = torch.unsqueeze(inputs_tensor,0)
# inputs_tensor = torch.unsqueeze(inputs_tensor,1)
print '--input size(nBatch x nClasses x height x width): ', inputs_tensor.shape
 
targets_tensor = torch.LongTensor([
 [0, 2],
 [2, 3]
])
 
targets_tensor = torch.unsqueeze(targets_tensor,0)
print '--target size(nBatch x height x width): ', targets_tensor.shape
 
inputs_variable = autograd.Variable(inputs_tensor, requires_grad=True)
inputs_variable = F.log_softmax(inputs_variable)
targets_variable = autograd.Variable(targets_tensor)
 
loss = nn.NLLLoss2d()
output = loss(inputs_variable, targets_variable)
print '--NLLLoss2d: {}'.format(output)

以上这篇Pytorch损失函数nn.NLLLoss2d()用法说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python进阶教程之循环相关函数range、enumerate、zip
Aug 30 Python
浅谈MySQL中的触发器
May 05 Python
Python实现比较两个列表(list)范围
Jun 12 Python
关于Python面向对象编程的知识点总结
Feb 14 Python
Python实现的质因式分解算法示例
May 03 Python
python 编写简单网页服务器的实例
Jun 01 Python
10个Python小技巧你值得拥有
Sep 29 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
wxPython实现列表增删改查功能
Nov 19 Python
Python检测端口IP字符串是否合法
Jun 05 Python
PyCharm 解决找不到新打开项目的窗口问题
Jan 15 Python
浅析Python __name__ 是什么
Jul 07 #Python
Pytorch上下采样函数--interpolate用法
Jul 07 #Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 #Python
pytorch加载自己的图像数据集实例
Jul 07 #Python
keras实现VGG16 CIFAR10数据集方式
Jul 07 #Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 #Python
Python调用C语言程序方法解析
Jul 07 #Python
You might like
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
原生js 秒表实现代码
2012/07/24 Javascript
AngularJS内置指令
2015/02/04 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
js图片上传的封装代码
2017/08/01 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
小程序实现锚点滑动效果
2019/09/23 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
Python实现识别图片内容的方法分析
2018/07/11 Python
Python多继承原理与用法示例
2018/08/23 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
前端制作动画的几种方式(css3,js)
2016/12/12 HTML / CSS
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
node中使用shell脚本的方法步骤
2021/03/23 Javascript
写给女生的道歉信
2014/01/14 职场文书
学期自我评价
2014/01/27 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
统计员岗位职责范本
2015/04/14 职场文书
欠条范文
2015/07/03 职场文书
同学聚会祝酒词
2015/08/10 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
Mysql 文件配置解析介绍
2022/05/06 MySQL