Since the last status report on 4/10, I made some progress with the web app by adding the necessary logic to Blackjack in case there are multiple winners. In addition, I implemented error handling in case of empty and faulty user input from web app users. An example of faulty input is if a user inputs a negative number of players into the web app. Finally, I implemented authentication in our web app so that only verified users can modify the state of the game through the text forms and buttons. I was able to showcase these updates during the interim demo, but here is a snapshot below for reference.
I have also been able to make progress with the machine learning component of our project. Jeremy and I have spent the last few weeks performing the following tasks: collecting image data, labeling the data, writing and modifying Python code to train and test a convolutional neural network (through interfacing with the PyTorch library), and experimenting with various hyperparameters (number of layers, size of kernel, etc). Below are some of my results from my experimentation, but as we get more data, these results are subject to change. K refers to the size of the kernel.
- Num convolution layers = 4 and K = 3
- Epoch 56: 93.45% – best validation accuracy
- Suit accuracy: 97.86%
- Rank accuracy: 93.57%
- Num convolution layers = 5 and K = 3
- Epoch 58: 86.90% – best validation accuracy
- Suit accuracy: 98.66%
- Rank accuracy: 87.67%
- Num convolution layers = 4 and K = 5
- Epoch 48: 95.83%- best validation accuracy
- Suit accuracy: 98.93%
- Rank accuracy: 95.71%
- Num convolution layers = 4 and K = 7
- Epoch 56: 83.63% – best validation accuracy
- Suit accuracy: 96.78%
- Rank accuracy: 84.99%
Overall, I am on schedule. My main future tasks involve gathering more training data and experimenting with our hyperparameters to reach our accuracy requirement.