# Implementing the simplest CNN, how to choose the first conv layer?

I'm working on a College assignment and I choose to implement an image classifier with Convolutional Neural Network using Matlab, I based this idea on this tutorials: How Convolutional Neural Network Work? (by Brandon Rohrer) and A Comprehensive Guide to Convolutional Neural Network (by Sumit Saha).

I've done the fast.ai first 5 courses and kinda know how this could be achieve with nowadays tools.

What I'm trying to implement is the simplest way of a CNN, using what Brandon Rohrer describes in his tutorial, differentiating $$X$$s from $$O$$s, to exercise the primordial concepts of a CNN, the convolutions, ReLU and pooling, operating with matrices. I already started thinking and implementing it.

But I'm facing some problems related to the initial filter or kernel. Brandon made some filters arbitrary choosing some features from the $$X$$ image he uses as the source. The problem is that in the real world, you won't be able to inform the areas that contains that features to every image you submit to classification, you will probably have another layer that will do edge detection and so. It seams to me that Sumit Saha choose a random matrix as a filter. I can't quite understand this first step.

What I am trying to know is if I can, for example, choose an arbitrary matrix as a filter, do some CNN operation with the $$X$$ and $$O$$ source, save the results in two vectors, as the tutorials suggested. And when I submit other images, I would do the same thing to them and compare the result vector to the other two stored vectors to see what is the most similar character if it is a $$X$$ or an $$O$$. I know that it won't be accurate and all, but it's a assignment to really just exercise those concepts, I don't wanna use fancy toolboxes or extra stuff.