坑爹的谷歌GPU colab,配置谷歌GPU血泪史

**

AssertionError: Path does not exist: /content/drive/My Drive/data/VOCdevkit2007/VOC2007/ImageSets/Main/trainval.txt

**

事情是这样,听说谷歌GPU免费,想着自己电脑整夜跑模型太心疼了,所以就去试了试,
我是faster-rcnn-dbeker版
运行的时候一直报错

AssertionError: Path does not exist: /content/drive/My Drive/data/VOCdevkit2007/VOC2007/ImageSets/Main/trainval.txt

坑爹的谷歌GPU colab,配置谷歌GPU血泪史_第1张图片
很纳闷,为什么路径不存在,开始以为是相对路径问题,尝试过直接在命令行输出

print(os.path.exists('/content/drive/My Drive/data/VOCDevkit2007/VOC2007/ImageSets/Main/trainval.txt'))
print(open("/content/drive/My Drive/data/VOCDevkit2007/VOC2007/ImageSets/Main/trainval.txt").readline())

结果还真出错了,不过最后查出来应该是路径太长,导致搜索堆栈溢出,这个应该不影响。

最后我去代码里面找出错的那段,发现是image_set_file的路径不对
触发了报错,如下

assert os.path.exists(image_set_file), \
            'Path does not exist: {}'.format(image_set_file)

可是我对应输出了image_set_file的值,返回的为

image_set_file为: <class 'str'> /content/drive/My Drive/data/VOCdevkit2007/VOC2007/ImageSets/Main/trainval.txt

我瞅着也没啥啊,类型也为str,没毛病,应该不存在编码问题(为此还特意去查了下py3的字符串编码)

然后,百思不得其解,我为了防止编码的问题,我又定义了一个ii等于trainval.txt的路径

ii = '/content/drive/My Drive/data/VOCDevkit2007/VOC2007'+'/ImageSets/'+'Main/trainval.txt'

可以看到这个路径我是拼起来的,是因为开始不是拼起来的,我看image_set_file是拼起来的,本着严谨的科学精神,用了控制变量法做个测试,代码如下
坑爹的谷歌GPU colab,配置谷歌GPU血泪史_第2张图片
输出如下
坑爹的谷歌GPU colab,配置谷歌GPU血泪史_第3张图片
这他娘的。。。我眼瞎了吗,ii和image_set_file一模一样为什么会出现两个字符串不相等。

经过一大天的挣扎,最终在群里截图一问,同学让我写个diff判断两个字符串有什么不一样,我本来已经放弃了,最后还是写了一个。。。
如下(太激动了当时把第一个print里面的==写成了!=)

if len(ii) != len(image_set_file):
            print(len(ii),len(image_set_file))
        for _ in range(len(ii)):
            print("第{}位对比结果{}".format(_,ii[_] != image_set_file[_]))
            if(ii[_] != image_set_file[_]):
                print("{}位对比失败{} {}".format(_,ii[_],image_set_file[_]))

然后,前方高能,,(因为==写成了!=,所以True和False反的)
坑爹的谷歌GPU colab,配置谷歌GPU血泪史_第4张图片
我。。。真的醉了
结果是
Colab自动把大写的D变成了小写的d,什么情况???
坑爹的谷歌GPU colab,配置谷歌GPU血泪史_第5张图片
至此结束

你可能感兴趣的:(深度学习)