现象:最近用google colab训练模型。分布在mnist和自定义的数据集上面训练好了两个CapsuleNet。colab 测试通过,一切正常。权重下载下来本地测试时发现:mnist的模型一切正常,但是自定义数据集上面的CapsuleNet在本地再次训练时直接爆炸了,其每个类别的推理结果都是乱码。
网上解决方案:99%都是自己代码的问题,自己debug去(输入网络的数据对不对,本地代码的设置对不对,代码是不是与服务器中的一致等)。
现象解释:经过脱发测试,发现是本地环境问题。
测试验证:本地使用CPU推理一切正常,acc>0.9。而使用GPU推理时,acc<0.1,且输出结果是乱的。
解决方法:
将tensorflow、cuda、cudnn的版本全部更换(我的:tensorflow1.15.2 --> tensorflow1.12.0, CUDA v10.0 --> CUDA v9.0, cudnn v7.6.5 --> cudnn v7.4.1)
后记:
1.试过将python和tensorflow进行版本更新、回退或重装,都不行,问题依旧。
2.我试过tf和cuda不动,直接覆盖重装同版本的cudnn,但是不行,还是全部换版本重装吧。
3.查看python运行log,看看cuda和cudnn有没有warning或error,有的话根据提示进行操作。