We will start with the hello world of machine learning, a neural network which predicts the output of a simple XOR gate.
Why XOR you ask? The reason is because the classes in XOR are not linearly separable. You cannot draw a straight line to separate the
points (0,0),(1,1) from the points (0,1),(1,0), hence it's a perfect candidate for a simple AI project.
Our network has 3 layers: input, hidden and output. Input and output layers have 2 nodes while the hidden layer has 16 nodes. Although XOR could be classified under Binary Classification we are trying to solve it using Multi-Class Classification. Instead of having a single output representing the result, the 2 output layer nodes display the probability of either 0 or 1 being chosen as the XOR result.
There are two versions to choose from. xor.py is written with minimal usage of libraries to show how a network is constructed in more depth. xor_torch.py is written using PyTorch.
To train, save weights/model and query:
python xor.py
or
python xor_torch.py
To load previous weights/model and query:
python xor.py l
or
python xor_torch.py l
| Input 1 | Input 2 | Output |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
