首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >pytorch BCEWithLogitsLoss计算pos_weight

pytorch BCEWithLogitsLoss计算pos_weight
EN

Stack Overflow用户
提问于 2022-03-13 18:07:49
回答 1查看 943关注 0票数 1

我有一个神经网络,如下所示,用于二进制预测。我的课程严重不平衡,1级只发生了2%的次数。只显示最后几层

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
self.batch_norm2 = nn.BatchNorm1d(num_filters)

self.fc2 = nn.Linear(np.sum(num_filters), fc2_neurons)

self.batch_norm3 = nn.BatchNorm1d(fc2_neurons)

self.fc3 = nn.Linear(fc2_neurons, 1)

我的损失如下。这是计算pos_weight参数的正确方法吗?我查看了这个链接的正式文档,它表明,对于多类分类,pos_weight需要每个类都有一个值。不确定二进制类是否是一个不同的场景。我试着输入两个值,但是我得到了一个错误。

My问题:对于二进制问题,是否是一个单独的值,而不像多类分类那样需要长度等于类数的列表/数组?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BCE_With_LogitsLoss=nn.BCEWithLogitsLoss(pos_weight=class_wts[0]/class_wts[1])

我的y变量是一个单一的变量,它有0或1来表示实际的类,并且神经网络输出一个值。

--------------------------------------------------Update 1

基于Shai的回答,我有以下问题:

  1. BCEWithLogitsLoss -如果这是一个多类问题,那么如何使用pos_weigh参数?
  2. 在放电筒中有使用焦损的例子吗?我发现了一些联系,但大多数都是两、三年或更久以前的事了。
  3. 对于训练,我是过度采样我的第一班。焦点损失是否仍被批准?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-16 01:17:32

pos_weight的文档确实有点不清楚。对于BCEWithLogitsLosspos_weight应该是torch.tensor of size=1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BCE_With_LogitsLoss=nn.BCEWithLogitsLoss(pos_weight=torch.tensor([class_wts[0]/class_wts[1]]))

但是,在您的例子中,pos类只发生了2%的次数,我认为只设置pos_weight是不够的。

请考虑使用焦损

宋伊琳,普里亚·戈亚尔,罗斯·格什克,何凯明,皮奥特·多尔拉尔·用于密集目标检测的焦距损失 (ICCV 2017)。

除了描述焦损外,本文还很好地解释了为什么CE损耗在不平衡情况下表现如此差。我强烈建议阅读这篇论文。

这里列出了其他替代方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71462326

复制
相关文章
numpy 插值
第二个参数是需要pad的值,参数输入方式为:((before_1, after_1), … (before_N, after_N)),其中(before_1, after_1)表示第1轴两边缘分别填充before_1个和after_1个数值;
全栈程序员站长
2022/09/22
6700
numpy 插值
用Pso思想求解y = x^2的最小值
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
算法与编程之美
2023/01/03
4970
Java真的只有值传递?
值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
一觉睡到小时候
2019/07/02
7050
Java真的只有值传递?
Echarts设置y轴值间隔
需求:如图,y轴之间的距离太小,这样就太过于拥挤了,现在要修改echarts里面的属性,设置y轴值间隔让图表看上去舒服一些。
王小婷
2019/03/22
9.2K0
Echarts设置y轴值间隔
java漫谈-Java只有值传递
文中用遥控器(引用)操作电视(对象)为例形象的说明了该引用名词的含义,同时在对定义的“引用”该名词的注释中提到:
WindCoder
2020/01/24
6470
为什么Java只有值传递
值传递: 调用函数时,将实参复制一份传给函数,函数中修改参数时不会影响实参 引用传递:调用函数时,将实参的地址传给函数,函数中修改参数会影响实参。 判断是值传递还是引用传递的标准,和传递参数的类型是没有关系的。
Qwe7
2022/04/01
4720
Numpy库之swapaxes(a,x,y)方法理解
ndarray对象的操作函数之np.swapaxes(a,x,y) 等价于 a.swapaxes(x,y)
狼啸风云
2021/03/03
1.6K0
Numpy中找出array中最大值所对应的行和列
Python特别灵活,肯定方法不止一种,这里介绍一种我觉得比较简单的方法。 如下图,使用x == np.max(x) 获得一个掩模矩阵,然后使用where方法即可返回最大值对应的行和列。 where返回一个长度为2的元组,第一个元素保存的是行号,第二个元素保存的是列号。
卡尔曼和玻尔兹曼谁曼
2019/01/22
6.5K0
Numpy中找出array中最大值所对应的行和列
求X值问题
已知有整数x,x + 100为一个平方数、x + 168也是一个平方数、请写出计算程序求出x的所有可能?
江涛学编程
2020/08/26
4660
Java中真的只有值传递么?
关于这个问题应该是存在争议的。根据测试出来的结果和我们自己的经验,以及口口相传或是上学时老师讲的,我们认为是第一种。但第二种说法的呼声也很高,渐渐地我们也认为第2中才是对的。那么下面我们就来分析一下这个问题。
编程大道
2020/02/11
1.1K0
Java 基础概念·Java 只有值传递
当我们调用一个有参函数的时候,会把实际参数传递给形式参数。在程序语言中,这个传递过程中有两种情况,即值传递和引用传递。
数媒派
2022/12/01
4260
Scipy和Numpy的插值对比
插值法在图像处理和信号处理、科学计算等领域中是非常常用的一项技术。不同的插值函数,可以根据给定的数据点构造出来一系列的分段函数。这一点有别于函数拟合,函数拟合一般是指用一个给定形式的连续函数,来使得给定的离散数据点距离函数曲线的总垂直距离最短,不一定会经过所有的函数点。比如在二维坐标系内,用一条直线去拟合一个平面三角形所对应的三个顶点,那么至少有一个顶点是不会落在拟合出来的直线上的。而根据插值法所得到的结果,一定是经过所有给定的离散点的。本文针对scipy和numpy这两个python库的插值算法接口,来看下两者的不同实现方案。
DechinPhy
2022/05/09
3.6K0
Scipy和Numpy的插值对比
[L5]快速掌握Series~过滤Series的值和缺失值的处理
由于在公众号上文本字数太长可能会影响阅读体验,因此过于长的文章,我会使用"[L1]"来进行分段。这系列将介绍Pandas模块中的Series,本文主要介绍:
触摸壹缕阳光
2020/05/13
10.4K0
为什么说Java中只有值传递?
相信我,当你正在看这篇文章的时,说明你对值传递和引用传递的理解大概率是错误的。如果你理解的是正确的,你应该也不会来看这篇文章。
诺浅
2020/08/19
5600
【说站】python如何过滤列表中的唯一值
1、使用collections.Counter函数对列表进行计数,并通过列表推导式过滤出非唯一值,过滤出计数大于1的值。
很酷的站长
2022/11/24
4.8K0
【说站】python如何过滤列表中的唯一值
numpy笔记_python numpy array
ndarray的可以对整块数据执行数学运算,语法与标量元素的元素的运算一致。 如:
全栈程序员站长
2022/09/20
6250
cssjshtml vue.js if过滤 if多个值
通过表单内每行根据status的数值,控制是否显示button。过滤数值的是一个数组列表。
葫芦
2019/08/19
3.4K0
[答疑]解析美女出的一道状态机题(x、y和z值)
状态机如下图所示。如果对象创建之后,事件e2、e1、e3、e4、e1和e5按给定顺序发生,请问,事件发生结束后,变量x、y和z值分别是_______________________。
用户6288414
2019/09/23
7920
[答疑]解析美女出的一道状态机题(x、y和z值)
numpy.array
numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
狼啸风云
2019/11/28
5590
excel挑选出每一行的最大值或最小值
Evacloud 撰写论文结果比较的时候需要跳出各个算例的最好的算法和最坏的算法,这时候我们就需要将每一行中的最大值或者最小值挑选出来。 框选出需要标注的区域文本,此处是A1:J100,点击开始选项卡
演化计算与人工智能
2021/04/02
3.6K0
excel挑选出每一行的最大值或最小值

相似问题

亮度问题Ubuntu 18.04 LTS

90

GNOME闪回中Qt Creator的AppMenu

20

在Ubuntu 18.04 LTS上运行Gnome盒

10

从终端修改ubuntu 20.04 LTS中的gnome闪回面板

20

无法从Ubuntu GNOME 16.04.4更新到18.04 LTS

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文