Pytorch调试锦集(一)

版权声明:如要转载,请标明最初的转载链接 https://blog.csdn.net/weixin_36411839/article/details/82720551

只是为了记录调试的困难和解决的方法,记得搜索问题。

  1. out of memory

out of memory at /opt/conda/conda-bld/pytorch_1524590031827/work/aten/src/THC/generic/THCStorage.cu:58

解决方法:1、换小的batch(已解决);2、图片尺寸换成小的;3、图片格式从float换成int;4、换大显存、大显卡;5、优化程序,每一步都释放掉多余的占用显存的变量;

2,Input type (CUDAFloatTensor) and weight type (CPUFloatTensor) should be the same
解决方法:仔细看错误信息,CUDA和CPU,输入数据x和模型中的权重值类型不一样,一般来说是因为模型的参数不在GPU中,而输入数据在GPU中,通过添加model.cuda()将模型转移到GPU上以解决这个问题。(已解决)

3,*Input type (CUDADoubleTensor) and weight type (CUDAFloatTensor) should be the same
解决方法:根据错误信息,显然Input类型和模型的权重类型不一致,一个为Double一个为float,通过对输入数据Tensor(x)进行x.float()将输入数据和模型权重类型一致,或者将模型权重的类型转化为Double也可以解决问题。

4,RuntimeError: size mismatch at /pytorch/torch/lib/THC/generic/THCTensorMathBlas.
cu:247

解决方法:就是出现了张量错误,可以通过调试,检查出现错误的上一层size,对下一层size是否对应。同时注意在pytorch中,全连接之前需要展开成一维向量,x = view(x.size(0), -1),一定要注意在展成一维向量之前要对该层进行与特征图大小的同等pooling,保证全连接的参数与一维向量的参数相互对应。(已解决)

猜你喜欢

转载自blog.csdn.net/weixin_36411839/article/details/82720551