GANet代码实现遇到的若干问题

GANet代码实现遇到的若干问题

开学以来一直在看立体匹配相关方向的论文,为了锻炼一下代码能力,最近几天试图将两个网络进行合并,构建成一个网络测测效果,主要是锻炼一下动手实践能力,遇到了一些问题,现在记录在下面。
  • 运行 sh compile.sh 编译错误,报错:no model libs.GANet.build.lib。编译错误主要因为一下几个问题:

    • 注意自己服务器gcc的版本(gcc -v 查看,需要升级到4.9及以上)
    • 注意自己的CUDA版本,CUDA版本需9.2及以上,9.0的编译也有问题。
  • 程序跑在一半过程中卡住,程序不动了。

    • libs.sync_bn模块的同步BN问题,多线程死锁问题,可以换一下别的同步BN模块,再来进行测试是否还会出现此问题。
  • DisparityRegression 函数报错非法内存访问 RuntimeError: cuda runtime error (77)

    • 引起错误的是语句

      disp = Variable(torch.Tensor(np.reshape(np.array(range(self.maxdisp)),[1, self.maxdisp, 1, 1])).cuda(), requires_grad=False)

      准确的说是.cuda() 非常奇怪的是,有时候能跑通几次,然后在程序运行过程中抛出这个错误,有的时候直接在第一次求损失就抛出这个错误,我怀疑原因是多卡运算造成的内存非法访问问题,切换为1卡就不会有这个错误了,但是单卡现存负担太大。不同人遇到的原因可能不同,建议查看https://discuss.pytorch.org/t/weird-cuda-illegal-memory-access-error/8848/16

  • 单卡可跑,但是多卡运行的时候就卡主不动

    • 注意设置一下batchsize的值,若你指定了3块GPU,但是batchsize=1 就会卡住,应该也设置为3才可。

你可能感兴趣的:(深度学习,python,深度学习,三维重建,立体匹配)