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 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
ptyhon实现sitemap生成示例
Mar 30 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
深入理解python中的闭包和装饰器
Jun 12 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
Python中一些深不见底的“坑”
Jun 12 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
详解python如何引用包package
Jun 07 Python
基于Python爬取fofa网页端数据过程解析
Jul 13 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 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
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
微信支付开发告警通知实例
2016/07/12 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
vue内置指令详解
2018/04/03 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
简单了解什么是神经网络
2017/12/23 Python
python 输出上个月的月末日期实例
2018/04/11 Python
python实现黑客字幕雨效果
2018/06/21 Python
详解Python发送email的三种方式
2018/10/18 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
优秀德育工作者事迹材料
2014/05/07 职场文书
2014年档案室工作总结
2014/12/01 职场文书
先进单位事迹材料
2014/12/25 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
员工手册董事长致辞
2015/07/29 职场文书
小学安全教育主题班会
2015/08/12 职场文书
高中美术教学反思
2016/02/17 职场文书
js 实现验证码输入框示例详解
2022/09/23 Javascript