MMdet的Resnet卷积替换成Ghost卷积组所出现的问题

1.SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in pos

此问题的意思是python中对“\”有定义,修改的代码有文件路径中如过包含这个符号 很有可能是当成转义字符了,我是因为从网上复制的注释导致的错误。

2.TypeError: FasterRCNN: ResNet: __init__() got an unexpected keyword argument‘dw_size’

出现这个错误是提示你出现意外的字符,一般该报错是因为环境中的protoc 版本与python版本不符,所以可以直接在终端窗口输入以下命令重新装protoc:

pip install -U protobuf

我出现这个错误是因为没有定义dw_size这个参数,修改后即可。

3.ValueError: FasterRCNN: ResNet: out_channels must be divisible by groups

出现这个错误是因为你分组的时候无法整除输入和输出通道数,必须能整除才行 。详细讲解可以看一下这位大佬的文章:

python基础教程:对pytorch的函数中的group参数的作用介绍_程序员牡蛎的博客-CSDN博客https://blog.csdn.net/chengxun03/article/details/1054442234.RuntimeError: Given groups=1, weight of size 32 3 3 3, expected input[1, 224, 224, 3] 

还是衔接上面的问题,出现这个问题大概率是因为分组的数不能整除

5.RuntimeError: Sizes of tensors must match except in dimension 2. Got 198 and

出现这个问题是因为我使用的expand_as这个方法了,导致两个张量维度不同,另外expand_as只能扩展一维的或者n行1列的。

6. RuntimeError: The expanded size of the tensor (272) must match the existing

和问题5一致,我出现这个问题是因为padding那里用错了数,不能直接给整数,可以用3//2,这样不会形成272和270

7.pytorch怎么看张量的各种数据啥的

可以看一下这个大佬的:

【pyTorch基础】(1) 张量的数据类型_立Sir的博客-CSDN博客_张量的数据类型https://blog.csdn.net/dgvv4/article/details/1241948838.RuntimeError: running_mean should contain 32 elements not 64

在做卷积操作的时候,步长改为2后,尺寸大小未对应好。通过各种print了解了详细过程。

9. ResNet: 'list' object attribute 'append' is read-only

result.append('Senior'),不需要等号,使用append的时候后面不能带“=”。

10.'Bottleneck' object has no attribute 'convs'

说的是残差块里面没有属性convs,是因为我不小心注释了。

11.PyTorch中的contiguous解读

期间学习了这个方法的原理,详情看大佬的文章:

PyTorch中的contiguous解读_DLANDML的博客-CSDN博客_pytorch中contiguous本文讲解了pytorch中contiguous的含义、定义、实现,以及contiguous存在的原因,非contiguous时的解决办法。并对比了numpy中的contiguous。contiguous 本身是形容词,表示连续的,关于 contiguous,PyTorch 提供了is_contiguous、contiguous(形容词动用)两个方法 ,分别用于判定Tensor是否是 contiguous 的,以及保证Tensor是contiguous的。PyTorch中的is_contiguous是https://blog.csdn.net/l641208111/article/details/122683939

12.Sizes of tensors must match except in dimension 2. Got 50 and 100

和上面出的问题一样,因为没对应好conv3的输入通道数,修改掉即可。

# width * scales,2022
        self.conv3 = build_conv_layer(
            self.conv_cfg,
            out1111_channels,
            self.planes * self.expansion,
            kernel_size=1,
            bias=False)

出现了如此多的问题后,自己进行了查询并解决,发现将resnet和ghostnet了解的基本差不多了,可能解决问题的过程就是提升的过程。

有同学也想将resnet网络中的普通卷积替换成Ghost分组卷积,可以在评论区交流。

你可能感兴趣的:(深度学习,目标检测,pytorch,图像处理)