一口气解决两个深度学习的恶心bug:)

就在刚刚,博主终于把自己项目中困扰了自己一个星期的bug给解决了,而且一口气连着解决了两个bug,收获颇多,心情无比的激动!!!所以趁现在对刚才一系列的操作还了熟于心,写下这篇博文,希望能对大家有所帮助。

问题(1)描述

就在一个星期当博主满怀期待的点击训练文件的run按钮时,出现了以下的bug
在这里插入图片描述
相信很多做深度学习的同学在跑项目的时候都遇到过这个问题,那我遇到这个问题之后,第一时间就把这个问题直接复制到了CSDN上,那么CSDN上给我的答案是这样的
在这里插入图片描述
根据这个答案,我们之所以会报错,是因为我们的datasets并没有读取成功,也就是说我们的datasets长度是0。那么这个为什么会是0呢??
在这里插入图片描述
我继续把程序的报错仔细读了一遍,发现它提示我直接引起报错的地方在主程序的98行,也就是我程序中读取数据的这一行。
一开始博主看到这里也没想到办法,因为本身98行的代码肯定是没问题的,如果有问题肯定在98行就报错了,不会运行到另一个文件去。
到了第二天晚上,到我再次看到这个bug的时候,我想到我可以在98行这个地方设置一个断点,我看看是不是主程序在调用另一个程序的时候出了问题。所以我在98行那里开始了debug。(注:图片中的SODLoader函数和DataLoader也是这个项目中的一个文件)
在这里插入图片描述
可是当我dubug一圈之后,我发现debug的过程中也没有问题啊,就这样一连过去了好几天。到了前天晚上,我发现了蹊跷,因为SODLoader函数和DataLoader是另一个文件中的函数,并且在另一个文件中也有和主程序一模一样的两行代码!
(我在中间打了一个print就是为了说明这是两个文件中的相同代码)
在这里插入图片描述
我抱着尝试的态度运行了DataLoader这个文件,发现单独运行这个文件竟然是不会有bug的!
这个时候我就想起来初中老师教过的控制变量法,既然两处代码一模一样,一个可以,一个不可以,那我直接分别debug然后比较哪个变量不一样不就可以了吗!
于是当我debug了两个晚上之后,我找到了端倪!
在这里插入图片描述
在这里插入图片描述
上图的第一张图是有问题的代码debug出来的结果,第二张图是成功的代码。可以发现,只有这个地方两处是不同的,也就是在主程序中我并没有成功的读取数据集,导致了文件这个列表里面是空的,那面就很奇怪了,为什么同样的代码会有不同的结果??
就在今晚,博主搞清楚了这个问题并成功解决了。
导致这个问题的根本原因其实是这两个文件的路径不同,因为train文件本身是和data这个文件夹并列的,而我们的dataloader文件在src这个文件夹之下,所以当我们想要从dataloader去读取data里的文件的时候要先跳出当前的路径。可是如果是从train函数去读取数据的话,此时再去跳出当前文件夹就会出现错误。
在这里插入图片描述

解决方法

在这里插入图片描述
在原项目中,这个地方数据存放是选择相对路径,那既然相对路径会出错,我们就统一为绝对路径。
在这里插入图片描述
这个时候我们再去运行主函数的时候就可以成功读取数据了!

问题(2)描述和解决方法

cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

为什么会碰到第二个问题呢,是因为当我设置成绝对路径之后,我的绝对路径中含有中文,所以出报错,那么这个问题的解决方法非常简单,就是保证路径中不要有中文就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会震pop的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值