At the start of the week, my lab partner, Christina, and I finished up our program for creating a decision boundary for a linearly separable dataset. We incorporated Matplotlib into our code for the graphing of our solution. Afterward, we began working on a 10-perceptron classifier (with each perceptron representing a single digit from 0 through 9) in order to classify handwritten digits. We trained our perceptrons for 10 generations with the MNIST database, which contains 42000 unique images. After training, our percent error reached ~18.25%, which is about what were expecting for a perceptron-based learning algorithm.
Our next challenge was to use an external USB camera with ROS to have our python script subscribe to the camera’s publisher stream. With this implemented, we were successful in pointing the camera at a handwritten digit, and our algorithm, for the most part, was able to classify the digits correctly. Some numbers were incorrectly classified due to looking similar (such as 5 and 6) and others due to possible deviation in the dataset (such as 4 and 1, both of which can be written in various ways).
At the end of the week, the graduate students introduced us to a more complex neural network for machine learning. We plan to work more with Jupyter and TensorFlow next week.
Aside from our lab work, we attended a scientific writing workshop on Wednesday where we learned about the importance of scientific writing and how to effectively present and communicate our research.