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中使用Mako模版库的简单教程
Apr 08 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
快速解决pandas.read_csv()乱码的问题
Jun 15 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
Nov 06 Python
PyCharm设置每行最大长度限制的方法
Jan 16 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
Python中拆分字符串的操作方法
Jul 23 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
python生成并处理uuid的实现方式
Mar 03 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 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
2009/06/29 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
jquery 扑捉回车键事件代码
2014/04/24 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
浅析JavaScript动画
2015/06/10 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
vue动态设置img的src路径实例
2018/09/18 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
python验证码识别的示例代码
2017/09/21 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
Django logging配置及使用详解
2019/07/23 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
物业电工岗位职责
2013/11/20 职场文书
大学校园毕业自我鉴定
2014/01/15 职场文书
关于祖国的演讲稿
2014/05/04 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
教师三严三实心得体会
2014/10/11 职场文书
丧事答谢词
2015/01/05 职场文书
黄石寨导游词
2015/02/05 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript