Pytorch常见问题
1.问题1: SiLU
问题一.Can‘t get attribute ‘SiLU‘ on <module ‘torch.nn.modules.activation
报错信息:
Traceback (most recent call last):
File "detect_test.py", line 87, in <module>
conf_thres_base=0.6,
File "/home/default/Documents/caibaojun/yolov5_demo/yolov5/detect_CH.py", line 56, in __init__
self.__load(device, model_img_size, model_path)
File "/home/default/Documents/caibaojun/yolov5_demo/yolov5/detect_CH.py", line 80, in __load
self.model = torch.load(weight_path, map_location=self.device)['model'].float().fuse().eval()
File "/usr/local/lib/python3.6/dist-packages/torch/serialization.py", line 579, in load
return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)
File "/usr/local/lib/python3.6/dist-packages/torch/serialization.py", line 837, in _load
result = unpickler.load()
AttributeError: Can't get attribute 'SiLU' on <module 'torch.nn.modules.activation' from '/usr/local/lib/python3.6/dist-packages/torch/nn/modules/activation.py'>
解决办法:
将SiLU拷贝到~/.local/lib/python3.8/site-packages/torch/nn/modules/activation.py文件中:
ubuntu 18.04 server
python3.8.0
pytorch==1.6.0 torchvision==0.7.0
# /usr/local/lib/python3.6/dist-packages/torch/nn/modules/activation.py 在该文件顶部添加下面代码
class SiLU(Module): # export-friendly version of nn.SiLU()
@staticmethod
def forward(x):
return x * torch.sigmoid(x)
2.问题2: pytorch导出onnx报错
报错问题:
CoreML: export failure: unexpected number of inputs for node x.2 (_convolution): 13
解决办法:
#1
https://zhuanlan.zhihu.com/p/350278710
#2 大致解决办法就是 换成torch1.6
https://github.com/ultralytics/yolov5/issues/1667
3问题:解决setup.py安装不上的问题
sudo apt-get install libprotobuf-dev protobuf-compiler
4 问题: ModuleNotFoundError: No module named ‘_lzma’
借鉴:
https://zhuanlan.zhihu.com/p/404162713
问题:
root@ubuntu:~/doc/yolov5-master# python3 load_Model.py
/usr/local/python3.7.5/lib/python3.7/site-packages/pandas/compat/__init__.py:124: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError.
warnings.warn(msg)
Traceback (most recent call last):
File "load_Model.py", line 27, in <module>
from models.common import Conv
File "/root/doc/yolov5-master/models/common.py", line 24, in <module>
from utils.datasets import exif_transpose, letterbox
File "/root/doc/yolov5-master/utils/datasets.py", line 29, in <module>
from utils.augmentations import Albumentations, augment_hsv, copy_paste, letterbox, mixup, random_perspective
File "/root/doc/yolov5-master/utils/augmentations.py", line 12, in <module>
from utils.general import LOGGER, check_version, colorstr, resample_segments, segment2box
File "/root/doc/yolov5-master/utils/general.py", line 29, in <module>
import torchvision
File "/usr/local/python3.7.5/lib/python3.7/site-packages/torchvision/__init__.py", line 7, in <module>
from torchvision import datasets
File "/usr/local/python3.7.5/lib/python3.7/site-packages/torchvision/datasets/__init__.py", line 6, in <module>
from .mnist import MNIST, EMNIST, FashionMNIST, KMNIST, QMNIST
File "/usr/local/python3.7.5/lib/python3.7/site-packages/torchvision/datasets/mnist.py", line 11, in <module>
import lzma
File "/usr/local/python3.7.5/lib/python3.7/lzma.py", line 27, in <module>
from _lzma import *
ModuleNotFoundError: No module named '_lzma'
解决办法:
第一步
# centos系统执行
yum install xz-devel -y
yum install python-backports-lzma -y
pip install backports.lzma
# ubuntu系统执行
apt-get install liblzma-dev -y
pip install backports.lzma
第二步
根据文章开头错误提示,/usr/local/python3.7.5/lib/python3.7/lzma.py,找到lzma.py位置
修改lzma.py文件
vim /usr/local/python3.7.5/lib/python3.7/lzma.py
第三步
#修改前
from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties
#修改后
try:
from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties
except ImportError:
from backports.lzma import *
from backports.lzma import _encode_filter_properties, _decode_filter_properties
重新启动!!!