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 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
简单介绍Python中的decode()方法的使用
May 18 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
Python 3实战爬虫之爬取京东图书的图片详解
Oct 09 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
python+splinter自动刷新抢票功能
Sep 25 Python
python远程邮件控制电脑升级版
May 23 Python
Python3的socket使用方法详解
Feb 18 Python
Python 使用 PyQt5 开发的关机小工具分享
Jul 16 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
python math模块的基本使用教程
Jan 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
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
基于Vue过渡状态实例讲解
2017/09/14 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
Python的Django框架使用入门指引
2015/04/15 Python
Django 添加静态文件的两种实现方法(必看篇)
2017/07/14 Python
Python装饰器用法实例总结
2018/05/26 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
pytorch梯度剪裁方式
2020/02/04 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
爱普生美国官网:Epson美国
2018/11/05 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
见习期自我鉴定
2014/01/31 职场文书
公司管理建议书范文
2014/03/12 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
人力资源部工作计划
2019/05/14 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
python实现学员管理系统(面向对象版)
2022/06/05 Python