Ask questionstf.nn.depthwise_conv2d with rank=1 kernels (separable filters)
<em>Please make sure that this is a feature request. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:feature_template</em>
Describe the feature and the current behavior/state. There is a thread about twice calling DepWhiseConv2d TF ops when we have rank=1 kernels (separable filters) VS a single call to DepWhiseConv2d with 2d kernel. I suppose that is would be hard to fuse on trace two DepWhiseConv2d on the separable filter. So I was asking why with the current DepWhiseConv2d in TF doesn't handle the kernel rank=1 case with an parameter for down the stack compiler/transformations (kernel size, input size, device type, etc.).
Will this change the current api? How? Yes Who will benefit with this feature? Separable filters (gaussian blur, etc) Any Other info. See https://github.com/tensorflow/addons/pull/1450#issuecomment-621351753 with follow-up @alextp and @rmlarsen comments.
Answer questions jpienaar
Is the proposal here that DepthwiseConv2dNative (for different dimensions) has an additional attribute to say that is separable and in which case it gets a rank 1 kernel. And allows backends to decide whether they want to implement that as a single call with 2D kernel or 2 calls of DepthwiseConv2dNative with said rank 1 kernel? The rationale being that matching these two calls would be too difficult/fragile?
So it isn't a case where one would have
%5 = tf.SomeKernelGeneration() %10 = DepthwiseConv2dNative(..., %5) %20 = DepthwiseConv2dNative(%10 ..., %5)
and need to find cases where you have 1 dephtwise conv feeding into a next and they both share the same kernel, and if so one can convert to the other call form?