-
Notifications
You must be signed in to change notification settings - Fork 447
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
剪枝时bn层的bias不用mask置零吗? #29
Comments
这一步只是把bn weight置零了,结构还是原来的,bias的激活值也还没转移,只是先测试下初步效果;bias处理在后面的prune_model_keep_size2里,会先将bias的激活偏移值传给后来层,再把它置零。 |
恩是的。我看到了,here。非常感谢 |
yolov3-channel-and-layer-pruning/utils/prune_utils.py Lines 255 to 263 in 79a94ee
请问你指的是这里吗? |
对的,是这里 |
对prune_model_keep_size2和update_activation的理解 block: conv1-bn1-leaky1-conv2-bn2-leaky2 在prune_model_keep_size2中,依据bn层γ来选择哪些层被剪,小于阈值的层要被剪掉。 prune_model_keep_size2处理逻辑:
offset其实就是求的每一个卷积核针对上一层的一个激活输出,卷积的计算流程是将kernel_size范围内的神经元加权求和,而cut_layers对应的层的输出即bias 3.conv2后面是BN层,那么这儿将上一层bias的计算结果直接写到BN的均值中。上一层原本是加cut_layers的均值,到了BN层就是减去他们了 |
请问第3条该如何理解呢?第一个convolutional的leaky(bias)传递给第二个convolutional后,为什么需要BN的均值减去offset呢?而传递到没有BN的卷积中,需要bias加上offset呢? |
bn均值减去offset(用k表示)是因为bn输入的x此时也减少了offset, ((x-k)-(mean-k))= x-k 。卷积加上是因为 令k = wk',w(x-k') + b + k = wx + b,保证输出近似不变 |
@YeLL0W 非常感谢,我想我明白了 |
@YeLL0W 请问若BN层的weight不趋向于0,是否仍旧有办法将该BN的bias移动到下一个BN的running_mean中呢? |
我已收到您发送的邮件。我会及时查看。
|
为什么这里被注释了
为什么不使用
bn_module.bias.data.mul_(mask)
剪枝时bn层的bias不用mask置零吗?
The text was updated successfully, but these errors were encountered: