-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Support for Depthwise Separable Convolution #301
Comments
Hi @zeno40, Alas we don't have a single depthwise-separable convolution primitive. I know our friend team who works on OpenVINO was going to submit a PR with this depthwise-separable convolution as a single primitive, but there is no ETA for this PR. |
Thanks for the information. |
How can I make a depthwise convolution primitive in mkl-dnn? thanks |
You have to use regular convolutions with groups (depthwise convolution is a particular case when the number of groups equal to the number of input/output channels). For example for the depthwise convolution with input
Please note that weights are 5 dimensional arrays (while src and dst are 4D which indicates that the convolution is with groups) and have number of groups equal |
Thanks, |
It should work (at least in theory) no matter what layout is. Though I would strongly recommend to allow Intel MKL-DNN to define the most appropriate layout, by passing Winograd as of now does not support depthwise convolution. And there no plans. The thing is that Winograd requires extra data movements compare to the direct algorithm and while it is still beneficial for the compute intensive cases, it would most likely be inefficient for the depthwise case, because those convolutions are mostly memory bandwidth bound. |
I use a fixed nchw layout because I also use a Windows port of NNPACK for regular non-strided convolutions with a kernel size equal or below 16x16 (except 1x1). |
Sorry for the last (stupid) question. Separable convolution is just a synonym used for a depthwise separable convolution. |
First of all, thanks for your excellent open-source dnn library!
I'm looking for a fast depthwise separable convolution implementation.
Is this something that's on the roadmap?
thanks
The text was updated successfully, but these errors were encountered: