hourglass训练出现acc是nan的情形

1、在训练hourglass和Pyranet的时候都会出现训练的时候acc会nan,why?


根据acc的代码,只有在分母为0的时候才会出现Nan的情形,以coco为例,badIdxCount是17,造成nan。

为什么badIdxCount会是17呢?


返回的全是-1,为什么会返回全是-1?


只能是给出的17个部位的标签全部是1引起来的,为什么全是1,原因是因为17张map图都是0,值,原因在于很多coco的标注点特别接近边缘,再进行旋转缩放的时候很容易把标注点切掉,特别对于只有一个标注点的样本,所以就会出现出来的图像没有标注点,17个通道的target都是0值,从而导致最后的nan得情况,但是注意这只是在batchsize=1的情况下才会出现这种情况


batchsize>1,就很少可以说不会出现这种情况。why?

原因是因为batchsize>1的清醒下,依次输入网络是好几张图片一起,以PyraNet为例


如果batchsize为3的话

对应的输入,输出,target的大小如下


相应的输出代码

         print('input')
         print(self.input:size())
         print(self.input:type())
         print('output')
         print(#output)
         print(output)
         print('target')
         print(#self.target)
         print(self.target)

对于batchsize大于1的情形,因为是连续的n张一起做测评,所以几乎不可能说n张图片都是一个标注点都不存在,这样的概率很低很低,至少在batchsize>1的条件下进行训练的时候发现没有nan的情形出现

2、

size = self.iters * self.batchsize

训练的一个epoch是batchsize*迭代的次数之积


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值