A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本篇的普适度不高,都是我个人在一个特定项目中遇到的问题的记录,以防再次出现相同错误时,还要花费力气去查找。

你可以试着用ctrl+F,输入你想要搜索的关键词,快速确定这里有没有你想要的信息。Have a nice day ^-^

RuntimeError: Dimension out of range (expected to be in range of [-1, 0], but got 1)
本来打算在AUC>threshold的时候在去算AUC2的值,

于是有了下面的代码:

for idx,val in enumerate(self.gt2_pre_labels):
        self.gt2_pre_labels = self.an_pre_labels.mul(torch.argmax(self.gt2_pre_labels_tmp,dim=1))
      if self.gt2_labels[idx] == self.gt2_pre_labels[idx]:
sum += 1
auc2 = float(sum) / float(len(self.dataloader['test'].dataset))
运行就出现了上面的现象,而且前几个epoch还是可以正常的运行,运行3、4个epoch之后,就出现了上面的错误提示,于是尝试把torch.argmax()中的dim修改成-1或者0,跑的通,但是所得结果不对。于是放弃AUC>threshold的时候去算AUC2的想法。



2.按照之前的想法,分别计算AUC和AUC2,通过visdom可视化的结果可以看到分类网络的交叉熵损失呈现上升趋势。。。现在还很迷,明天再来解决这个问题,不过这个发现为提高AUC2的准确率提供了帮助。



3.python的UnboundLocalError: local variable 'xxx' referenced before assignment

在我程序中,把这个xxx变量放错了地方,我没有注意到缩进。。。好几次因为缩进的原因报错了。。。我的锅,我背

一、意思
本地变量xxx引用前没定义。


二、错误原因
    在于python没有变量的声明 , 所以它通过一个简单的规则找出变量的范围 :如果有一个函数内部的变量赋值 ,该变量被认为是本地的,所以如果有修改变量的值就会变成局部变量。


三、产生这个错误的场景
python代码:
val=9
def test(flag):  
    if flag:  
        val = 1  
    else:  
        print 'fuck'  
    return val

test(0)
错误提示:UnboundLocalError: local variable 'val' referenced before assignment

解决方法:用global关键字来进行说明该变量是全局变量
python代码:
val=9
def test(flag):
    global val
    if flag:
        val = 1
    else:
        print 'test'
    return val

test(0)



4.在调试程序过程中,遇到的最要命的错误是segmentation fault(core dumped),就是这简短的提示,什么其他的都没有!!我寻思着应该就是哪里寻址没寻到吧,于是每隔一段程序输出一个flag,看看是在哪里出现了问题,就这样一步步逼近,最后找出了是在一个函数中,寻址出现了问题。

解决这个问题的过程中,让我调bug的技术有所提高,以后就算是遇到了类似没给我出具体错误出在哪里的错误,我也有了解决方案,如果你有更好的办法欢迎不吝赐教。




---------------------
【转载,仅作分享,侵删】
作者:爱巴顿的兰胖子
原文:https://blog.csdn.net/u014577061/article/details/87885901
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
奈斯,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马