之前的pytorch程序是0.4版本,后将pytorch升级到1.3,运行程序就报错,主要是程序里的roi pooling出现问题。
1.首先:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple torch===1.1.0 torchvision===0.4.1,升级pytorch
2.运行程序报错:pytorch module 'torch._C' has no attribute '_THCUNN' ;
于是: self._backend=type2backend[input.type()] 改成 self._backend = type2backend[type(input)]
此时又报错:
3,最后,将程序里的:
output.append(adaptive_max_pool(im, size)) 改成 output.append(F.adaptive_max_pool2d(im, size))
要加上引用库: import torch.nn.functional as F
这个问题的实质是,新版本的F.adaptive_max_pool2d 已经可以实现2d pooling;自己再重新写这个函数需要的底层接口.SpatialAdaptiveMaxPooling_updateOutput,已经变了。
4,另外,中途曾经将ptorch 降级到1.1 遇到如下两个问题:
第一个:self._backend.SpatialAdaptiveMaxPooling_updateOutput(self._backend.library_state, input, output, indices,self.out_w, self.out_h)
File "/home/ubuntu/.local/lib/python3.5/site-packages/torch/_thnn/utils.py", line 27, in __getattr__
raise NotImplementedError
未能解决。
第二个:ImportError: /usr/local/lib/libcaf#output.append(adaptive_max_pool(im, size))
output.append(F.adaptive_max_pool2d(im, size))
/usr/local/lib/libcafffe2_gpu.so: undefined symbol: _ZTIN6caffe210DAGNetBaseE
此时发生了库的引用问题。/usr/local/lib/libcafffe2_gpu.so,
locate libcafffe2_gpu.so 发现有好几个这个库,因此将这个库删除或重命名了。
mv /usr/local/lib/libcafffe2_gpu.so /usr/local/lib/libcafffe2_gpu.so.bak