Unpooling and deconvolution layers
Hello!
Is it possible to create a segmentation network using your library? As I know, for that I need an unpooling and deconvolutional layers.
Hi!
Currently there is no unpooling or deconvolution. It's something I have planned to do but it's low on my priority list.
PR welcome :)
Def interested about this too. I'm not sure if my own skill/time (the two tend to be related!) is enough to add this feature, but many of my use cases would need proper learning-enabled upsampling in the form of transposed convolution.
I think I will get cracking on it. It would be very useful for generative networks. IIRC, the maths are very similar to convolutions (some indexes swapped) and cudnn already handles that.
Some useful links:
- Convolution and Transposed Convolution algos: https://arxiv.org/pdf/1603.07285.pdf
- Convolution, GPU double: https://github.com/cbovar/ConvNetSharp/blob/master/src/ConvNetSharp.Volume.GPU/Double/Volume.cs#L245
- Convolution, GPU single: https://github.com/cbovar/ConvNetSharp/blob/master/src/ConvNetSharp.Volume.GPU/Single/Volume.cs#L246
- Convolution, CPU double: https://github.com/cbovar/ConvNetSharp/blob/master/src/ConvNetSharp.Volume/Double/Volume.cs#L145
- Convolution, CPU single: https://github.com/cbovar/ConvNetSharp/blob/master/src/ConvNetSharp.Volume/Single/Volume.cs#L142
- Tests: https://github.com/cbovar/ConvNetSharp/blob/master/src/ConvNetSharp.Volume.Tests/VolumeTests.cs#L252