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实现以时间换空间的缓存替换算法
Feb 19 Python
python+mongodb数据抓取详细介绍
Oct 25 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
详解python编译器和解释器的区别
Jun 24 Python
通过python改变图片特定区域的颜色详解
Jul 15 Python
Django REST framework内置路由用法
Jul 26 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
Aug 09 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 23 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
PHP类继承 extends使用介绍
2014/01/14 PHP
如何让CI框架支持service层
2014/10/29 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
js异常捕获方法介绍
2013/04/10 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
了解JavaScript中的选择器
2019/05/24 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
pyside写ui界面入门示例
2014/01/22 Python
从零学Python之入门(二)基本数据类型
2014/05/25 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Saltstack快速入门简单汇总
2016/03/01 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
Python Django view 两种return的实现方式
2020/03/16 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
高山背包:High Sierra
2017/11/23 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
质检的岗位职责
2013/11/17 职场文书
酒店经理职责
2014/01/30 职场文书
婚前协议书怎么写
2014/04/15 职场文书
小班下学期评语
2014/05/04 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
刮痧观后感
2015/06/05 职场文书
好员工观后感
2015/06/17 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
新员工入职感言范文!
2019/07/04 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python