Closed SISTMrL closed 4 years ago
你调小剪植率试试,有可能是稀疏化程度不够,没法剪植这么多
你好,我调试了代码,似乎是代码本身的问题。我用的repo是你大概一个月之前的repo,我查看了生成的网络结构,这里我列举的部分结构是从输入到第一个shortcut
Darknet( (module_list): ModuleList( (0): Sequential( (Conv2d): Conv2d(3, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (BatchNorm2d): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (activation): LeakyReLU(negative_slope=0.1, inplace=True) ) (1): Sequential( (Conv2d): Conv2d(32, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) (BatchNorm2d): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (activation): LeakyReLU(negative_slope=0.1, inplace=True) ) (2): Sequential( (Conv2d): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1), bias=False) (BatchNorm2d): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (activation): LeakyReLU(negative_slope=0.1, inplace=True) ) (3): Sequential( (Conv2d): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (BatchNorm2d): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (activation): LeakyReLU(negative_slope=0.1, inplace=True) ) (4): Sequential()
其中index为4的是shortcut,我当时第一次跑的时候也注意到这个,但是没有在意。但是今天再次看你的repo,你进行 部分更新,发现你在shortcut实现中添加了类 weightedfeaturefusion来进行融合特征。
所以当代码执行到next_conv = pruned_model.module_list[next_idx][0]时,此时next_idx为4,所以pruned_model.module_list[next_idx]为Sequential(),所以再执行索引操作[0]时出现了错误。
所以我猜测在你原先一个多月前的repo版本里,是没有实现shortcut的feature fusion操作的。今天看了你更新的代码,我先再重新实验下。
问题描述有点长,不知这个bug出现的原因猜测是否正确,烦请你耐心阅读,诚盼回复,十分感谢!
抱歉,有实现这个fusion和concat,这个问题可以关了,我再去试试剪纸操作
当我执行normal prune时,当执行到prune_utils.py 中函数prune_model_keep_size的next_conv = pruned_model.module_list[next_idx][0]语句时出现IndexError: index 0 is out of range的错误信息。 command: