Skip to content
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

resnet50 + ghost module #34

Closed
pawopawo opened this issue Aug 11, 2020 · 9 comments
Closed

resnet50 + ghost module #34

pawopawo opened this issue Aug 11, 2020 · 9 comments

Comments

@pawopawo
Copy link

ghostnet在 resnet50中的那个实验,是怎么把ghost module结合进去的呀,cheap conv用的是depth conv吗

@pawopawo
Copy link
Author

resnet-50 中的bottleneck 里的 3个 conv 都换成ghost module吗

@iamhankai
Copy link
Member

是的,除了第一个conv,其他所有conv都换。

@huangpan2507
Copy link

huangpan2507 commented Oct 29, 2020

是的,除了第一个conv,其他所有conv都换。

You mean, use Ghost_module instead of all the conv in the bottleneck ,include conv in downsample and except the first conv in Resnet? So I replace all of the conv except the first conv in Resnet, but The GPU cost increasely almost 10897M( My decive: 1 piece 1080ti GPU, before modify, GPU cost is 7645M ,batchsize= 8 * 4 ),it remind me that GPU is run out of memory, until I modify the batchsize = 1*4, the program can run!

@xyl-507
Copy link

xyl-507 commented Feb 4, 2021

是的,除了第一个conv,其他所有conv都换。

@iamhankai @huangpan2507
您好,请问一下。对于后面两层layer3、4的conv2中有padding=2,dilation=2的情况,需要把padding=2,dilation=2传入到GhostModule中吗?如果是的话,GhostModule中primary_conv和cheap_operation都要接收这两个参数吗?
谢谢!

@iamhankai
Copy link
Member

是的,除了第一个conv,其他所有conv都换。

@iamhankai @huangpan2507
您好,请问一下。对于后面两层layer3、4的conv2中有padding=2,dilation=2的情况,需要把padding=2,dilation=2传入到GhostModule中吗?如果是的话,GhostModule中primary_conv和cheap_operation都要接收这两个参数吗?
谢谢!

您好,要传进去的。primary_conv接收这2个参数,cheap_operation不接收。

@xyl-507
Copy link

xyl-507 commented Feb 6, 2021

是的,除了第一个conv,其他所有conv都换。

@iamhankai @huangpan2507
您好,请问一下。对于后面两层layer3、4的conv2中有padding=2,dilation=2的情况,需要把padding=2,dilation=2传入到GhostModule中吗?如果是的话,GhostModule中primary_conv和cheap_operation都要接收这两个参数吗?
谢谢!

您好,要传进去的。primary_conv接收这2个参数,cheap_operation不接收。

不好意思,我按照您的意思进行更改。发现GhostModule应用在stride=2的conv上会出现,和原始conv得到的特征图维度不一致的情况。如:输入6336的特征图,stride=2的conv得到3131的输出特征图,而ghostmodule得到的是32*32输出特征图。这样会影响网络的输出与训练标签不一致,请问一下,您们是怎么解决的啊?谢谢

@iamhankai
Copy link
Member

是的,除了第一个conv,其他所有conv都换。

@iamhankai @huangpan2507
您好,请问一下。对于后面两层layer3、4的conv2中有padding=2,dilation=2的情况,需要把padding=2,dilation=2传入到GhostModule中吗?如果是的话,GhostModule中primary_conv和cheap_operation都要接收这两个参数吗?
谢谢!

您好,要传进去的。primary_conv接收这2个参数,cheap_operation不接收。

不好意思,我按照您的意思进行更改。发现GhostModule应用在stride=2的conv上会出现,和原始conv得到的特征图维度不一致的情况。如:输入63_36的特征图,stride=2的conv得到31_31的输出特征图,而ghostmodule得到的是32*32输出特征图。这样会影响网络的输出与训练标签不一致,请问一下,您们是怎么解决的啊?谢谢

你需要改变conv或cheap_op的padding值,以让他们的输出尺寸能匹配上。

@xyl-507
Copy link

xyl-507 commented Feb 8, 2021

是的,除了第一个conv,其他所有conv都换。

@iamhankai @huangpan2507
您好,请问一下。对于后面两层layer3、4的conv2中有padding=2,dilation=2的情况,需要把padding=2,dilation=2传入到GhostModule中吗?如果是的话,GhostModule中primary_conv和cheap_operation都要接收这两个参数吗?
谢谢!

您好,要传进去的。primary_conv接收这2个参数,cheap_operation不接收。

不好意思,我按照您的意思进行更改。发现GhostModule应用在stride=2的conv上会出现,和原始conv得到的特征图维度不一致的情况。如:输入63_36的特征图,stride=2的conv得到31_31的输出特征图,而ghostmodule得到的是32*32输出特征图。这样会影响网络的输出与训练标签不一致,请问一下,您们是怎么解决的啊?谢谢

你需要改变conv或cheap_op的padding值,以让他们的输出尺寸能匹配上。

感谢作者的耐心回复!在您的指点下,成功替换了resnet50中的conv(除了第一个conv和一个stride=2的conv)。但当我将替换后的backobone进行训练时,会报错:
CUDA is run out of memory (使用的是两块12GB 2080Ti的卡)
请问一下,按理来说替换后的网络参数量更少了,怎么会内存不够呢?
麻烦作者了,谢谢!

@iamhankai
Copy link
Member

是的,除了第一个conv,其他所有conv都换。

@iamhankai @huangpan2507
您好,请问一下。对于后面两层layer3、4的conv2中有padding=2,dilation=2的情况,需要把padding=2,dilation=2传入到GhostModule中吗?如果是的话,GhostModule中primary_conv和cheap_operation都要接收这两个参数吗?
谢谢!

您好,要传进去的。primary_conv接收这2个参数,cheap_operation不接收。

不好意思,我按照您的意思进行更改。发现GhostModule应用在stride=2的conv上会出现,和原始conv得到的特征图维度不一致的情况。如:输入63_36的特征图,stride=2的conv得到31_31的输出特征图,而ghostmodule得到的是32*32输出特征图。这样会影响网络的输出与训练标签不一致,请问一下,您们是怎么解决的啊?谢谢

你需要改变conv或cheap_op的padding值,以让他们的输出尺寸能匹配上。

感谢作者的耐心回复!在您的指点下,成功替换了resnet50中的conv(除了第一个conv和一个stride=2的conv)。但当我将替换后的backobone进行训练时,会报错:
CUDA is run out of memory (使用的是两块12GB 2080Ti的卡)
请问一下,按理来说替换后的网络参数量更少了,怎么会内存不够呢?
麻烦作者了,谢谢!

推测是因为中间过程的feature maps更多了。减小batch size吧。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants