There are several images related to convolutional networks on the Internet, an example of which I have given below enter image description here

My question is: are these images the weights/filters of the convolution layer (the weights that are learned in the learning process), or the convolved images of the previous layer's image with the filters of the current layer?

image source: https://stats.stackexchange.com/questions/362988/in-cnn-do-we-have-learn-kernel-values-at-every-convolution-layer


1 Answer 1


Only the first convolutional layer, with filters that process the input [colour] channels directly, can be rendered directly as image patches in the same domain as the input. The left-most panel in your example looks like that.

Further layers of the neural network cannot be rendered like this for two reasons:

  • They have a number of input channels based on the previous layer's output, for example they may process 32 or 128 channels. There is no simple mapping of these channels to colours.

  • They respond to a wider range of input stimuli than any single image patch. If you tried to render out all inputs that they respond to then you would likely get an indistinct-looking grey blob, if anything at all. This is different to the first layer which does directly react pixel-by-pixel according to the weights.

What is typically done to render patches like the middle and right-most panels in your example, is to find sample patches that trigger a strong response from that filter. This search can be done using gradient ascent - start with noise, then take gradient steps in the direction of increasing the signal for that filter. This is also the basis of "Deep Dream" images, which instead of doing that for small patches, apply it to whole images, and many filters at once.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .