After reading various examples of CNNs it doesn't look like the kernel used for convolution is flipped. Can anybody explain why?
-
2$\begingroup$ what do you mean by flipped? $\endgroup$– AntoineJul 21, 2016 at 13:45
-
$\begingroup$ @Antoine wikimedia.org/api/rest_v1/media/math/render/svg/… $\endgroup$– jamesJul 21, 2016 at 13:53
-
3$\begingroup$ ok... I think you need to provide a bit more details in your question if you want to attract high quality answers. For instance, links to the examples you reference and some definition would be helpful $\endgroup$– AntoineJul 21, 2016 at 14:07
-
2$\begingroup$ I reopened this thread because Franck Denoncourt's fine answer makes it very clear what is being asked and also supports the supposition that people familiar with neural networks, convolutions, and kernels will know exactly what is meant in this question. $\endgroup$– whuber ♦Jul 21, 2016 at 21:52
2 Answers
Sometimes yes, sometimes no. E.g., if you look at http://deeplearning.net/software/theano/library/tensor/nnet/conv.html, you'll see some methods that flip the kernel, and some that do not. But to be mathematically correct, it should flip (the downside being it might make it less intuitive).
Another source echoing it: http://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
"Deep learning" is not the best field for rigorous definitions.
FYI:
Supplementing a bit:
Sometimes they do read/store the memory in reverse order.
I do not know why they chose the "convolution" terminology, although it is clearly a cross-corellation.
However it does not seem to matter whether you flip it or not, because the values are tuned through the training process. That being said, intuitively the arrangement of the weights will get flipped and the final weights will come out to be the same.