iamhankai / ghostnet.pytorch

[CVPR2020] GhostNet: More Features from Cheap Operations
https://arxiv.org/abs/1911.11907
523 stars 118 forks source link

为什么我在替换nn.Conv2d的时候,初始化权重会报错? #33

Open tianyuluan opened 4 years ago

tianyuluan commented 4 years ago

听从您的建议,我用GhostModule代替我网络中的nn.Conv2d,别的没有改动,然后测试网络,会报错如下: Traceback (most recent call last): File "C:/Users/luan/Downloads/YOLOv4-PyTorch-master/CSPDarknet53.py", line 184, in model = CSPDarknet53() File "C:/Users/luan/Downloads/YOLOv4-PyTorch-master/CSPDarknet53.py", line 154, in init self.stem_conv = Conv(3, stem_channels, 3) File "C:/Users/luan/Downloads/YOLOv4-PyTorch-master/CSPDarknet53.py", line 67, in init MyConv2d(in_channels, out_channels, kernel_size, stride), File "C:/Users/luan/Downloads/YOLOv4-PyTorch-master/CSPDarknet53.py", line 37, in init nn.Conv2d(init_channels, new_channels, dw_size, 1, dw_size//2, groups=init_channels, bias=False), File "C:\anaconda\lib\site-packages\torch\nn\modules\conv.py", line 338, in init False, _pair(0), groups, bias, padding_mode) File "C:\anaconda\lib\site-packages\torch\nn\modules\conv.py", line 53, in init self.reset_parameters() File "C:\anaconda\lib\site-packages\torch\nn\modules\conv.py", line 56, in reset_parameters init.kaiminguniform(self.weight, a=math.sqrt(5)) File "C:\anaconda\lib\site-packages\torch\nn\init.py", line 322, in kaiminguniform fan = _calculate_correct_fan(tensor, mode) File "C:\anaconda\lib\site-packages\torch\nn\init.py", line 291, in _calculate_correct_fan fan_in, fan_out = _calculate_fan_in_and_fan_out(tensor) File "C:\anaconda\lib\site-packages\torch\nn\init.py", line 223, in _calculate_fan_in_and_fan_out receptive_field_size = tensor[0][0].numel() IndexError: index 0 is out of bounds for dimension 0 with size 0

JacobLau84 commented 4 years ago

方便把CSPDarknet53.py這個檔案貼出來看一下嗎?

tianyuluan commented 4 years ago

方便把CSPDarknet53.py這個檔案貼出來看一下嗎? 可以的,问题我已经解决了,是我自己太蠢了,我foked的别人的CSPDarknet53,他里边自定义了一个Conv函数,然后我用GhostModule去替换的这个函数里边的nn.conv2d,导致在权重初始化的时候一直报错,刚才我将他的Conv这个函数注释掉,然后用GhostModule 代替,就好了。但是不知道之前的报错是因为什么。如果您知道的话,请告知。谢谢! 这里边有CSPDarkNet53:https://github.com/romulus0914/YOLOv4-PyTorch

JacobLau84 commented 4 years ago

方便把CSPDarknet53.py這個檔案貼出來看一下嗎? 可以的,问题我已经解决了,是我自己太蠢了,我foked的别人的CSPDarknet53,他里边自定义了一个Conv函数,然后我用GhostModule去替换的这个函数里边的nn.conv2d,导致在权重初始化的时候一直报错,刚才我将他的Conv这个函数注释掉,然后用GhostModule 代替,就好了。但是不知道之前的报错是因为什么。如果您知道的话,请告知。谢谢! 这里边有CSPDarkNet53:https://github.com/romulus0914/YOLOv4-PyTorch

想請教一下,你做更換之後速度有提升嗎?

tianyuluan commented 4 years ago

方便把CSPDarknet53.py這個檔案貼出來看一下嗎? 可以的,问题我已经解决了,是我自己太蠢了,我foked的别人的CSPDarknet53,他里边自定义了一个Conv函数,然后我用GhostModule去替换的这个函数里边的nn.conv2d,导致在权重初始化的时候一直报错,刚才我将他的Conv这个函数注释掉,然后用GhostModule 代替,就好了。但是不知道之前的报错是因为什么。如果您知道的话,请告知。谢谢! 这里边有CSPDarkNet53:https://github.com/romulus0914/YOLOv4-PyTorch

想請教一下,你做更換之後速度有提升嗎?

还未做训练。

iamhankai commented 4 years ago

方便把CSPDarknet53.py這個檔案貼出來看一下嗎? 可以的,问题我已经解决了,是我自己太蠢了,我foked的别人的CSPDarknet53,他里边自定义了一个Conv函数,然后我用GhostModule去替换的这个函数里边的nn.conv2d,导致在权重初始化的时候一直报错,刚才我将他的Conv这个函数注释掉,然后用GhostModule 代替,就好了。但是不知道之前的报错是因为什么。如果您知道的话,请告知。谢谢! 这里边有CSPDarkNet53:https://github.com/romulus0914/YOLOv4-PyTorch

想請教一下,你做更換之後速度有提升嗎?

还未做训练。

期待你的结果。