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 字符串操作方法大全
Mar 11 Python
Python引用模块和查找模块路径
Mar 17 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
Tensorflow简单验证码识别应用
May 25 Python
Django框架视图介绍与使用详解
Jul 18 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
Python 下载及安装详细步骤
Nov 04 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 Python
简单了解Python多态与属性运行原理
Jun 15 Python
Django视图类型总结
Feb 17 Python
pd.DataFrame中的几种索引变换的实现
Jun 16 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
简单谈谈favicon
2015/06/10 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
php格式文件打开的四种方法
2018/02/24 PHP
js查找父节点的简单方法
2008/06/28 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python编程实现的图片识别功能示例
2017/08/03 Python
python3爬取各类天气信息
2018/02/24 Python
Python遍历numpy数组的实例
2018/04/04 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
python实现微信防撤回神器
2019/04/29 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
中医专业应届生求职信
2013/11/17 职场文书
大学生军训感想
2014/02/16 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android