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将图片文件转换成base64编码的方法
Mar 14 Python
OpenCV实现人脸识别
Apr 07 Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
Django 重写用户模型的实现
Jul 29 Python
python3图片文件批量重命名处理
Oct 31 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
python连接PostgreSQL过程解析
Feb 09 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 Python
Django mysqlclient安装和使用详解
Sep 17 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 15 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函数连续调用实例分析
2015/07/30 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
Aptana调试javascript图解教程
2009/11/30 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
基于jQuery的自动完成插件
2011/02/03 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
Python异常处理总结
2014/08/15 Python
python使用str & repr转换字符串
2016/10/13 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
如何基于python生成list的所有的子集
2019/11/11 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
中标通知书格式
2015/04/17 职场文书
2015年预算员工作总结
2015/05/14 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL