ConvNetSharp icon indicating copy to clipboard operation
ConvNetSharp copied to clipboard

Unpooling and deconvolution layers

Open Daemon2017 opened this issue 8 years ago • 4 comments

Hello!

Is it possible to create a segmentation network using your library? As I know, for that I need an unpooling and deconvolutional layers.

Daemon2017 avatar Jun 18 '17 17:06 Daemon2017

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 :)

cbovar avatar Jun 18 '17 23:06 cbovar

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.

tzaeru avatar Aug 14 '19 15:08 tzaeru

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.

cbovar avatar Aug 16 '19 06:08 cbovar

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

cbovar avatar Jan 03 '20 16:01 cbovar