Understanding Image Convolution and Mushy Brains

I spent a bit of time yesterday afternoon to code up a small demo of image convolution. Image convolution is the key operation used in convolutional neural networks (CNNs) — systems that recognize images.

In the figure below, I have a matrix that represents a 5×5 pixel picture with a 1-pixel border. The weights (also called a kernel) has nine values in a 3×3 box. Applying the weight values and the bias value to the matrix, with a stride of 2, results in a 3×3 (the same size as the weights — an unfortunate coincidence in this case) output.

The weights box starts in the upper left of the matrix; each pair of corresponding matrix and weight values are multiplied, then the bias is added. Next the stride is applied and the weights box moves to the right by two cells. (If the box goes off the end, then it moves down two cells to the start of the next row).

Convolution is complicated on several levels. Conceptually, convolution is scanning just a part of an image to extract features. This works better than trying to scan the entire image as a single large entity. The coding is very tricky too.

So why did I do this demo? I try to do some coding every day. Coding is a skill that if not used, will quickly leave you. Even more importantly, working out the logic for a demo like convolution is rigorous mental exercise. Again, if you don’t exercise your analytic skills, they will go away.

I was talking to a job candidate not too long ago in a pre-interview informational session. The candidate had years of experience at tech companies. But for the past few years the candidate had been a manager in a repetitive operations environment. We talked for a long time. I don’t want to be mean, but this person’s brain had completely turned to mush with regards to analytic skills. Note that repetitive/operations type of management is not at all like management in something like a research environment — research or tech-development management is highly stimulating.

The candidate was energetic and articulate, but it was clear the candidate had completely stalled out intellectually. This absolutely demonstrated to me (and all the other people who talked to the candidate in depth) that the person did not embrace continuous learning — in my world a characteristic that’s essential for success.


Two slightly different opinions on having a growth mindset. Click to enlarge.

This entry was posted in Machine Learning. Bookmark the permalink.