We need a Conv3D layer, where the filters are 3D arrays (e.g. 10 by 10 by 10) and these are convolved over another 3D array (e.g 100 by 100 by 100) to yield a e.g. (90, 90, 90) map (assuming no padding). Would this be possible in Flux.jl?
It would certainly be possible, but we don't currently have any support for it. We'd need either a pure-Julia convolution operator for CPU, or a CUDNN wrapper for GPU. If someone wants to put this together it'd be a welcome addition.
Hi! I would like to take a crack at it. I am working on adding a pure-Julia convolution operator for CPU.
Great! Let me know how I can help. Might be useful to have ImageFiltering.jl as a reference.
I was wondering, wouldn't it be a good idea of adding 3D versions of im2col and other functions from conv.cpp?
That would certainly work and would be an acceptable approach. I think it'd be much easier to write something in Julia though, and it'd be easy to make that handle any number of dimensions.
Hey, @MikeInnes! I have opened PR #27 in NNlib. Please review it.
Is there anything wrong with the PR?
Thanks to @tejank10 this will be in the next release!
Most helpful comment
Thanks to @tejank10 this will be in the next release!