📗 In this competition, you will train a neural network to recognize shapes, in particular, 3D shapes, with possible noise. The neural network should be fully connected with two hidden layers (ReLU activation, a maximum of 128 units in each layer) and input layer with 1024 units, and output layer with 3 units (softmax activation). You can either write your own version of gradient descent, use someone else's code (please give proper attribution) or train the network using a package such as PyTorch, but you should design the network sizes yourself and create your version of the training set.
📗 Submit your network to compete with other students to get the highest score on some test set. Your team can also submit ten sets of three images to include in the test set (perhaps ones your network can predict correctly, but you think other students' networks might not).
📗 If a test item has shape (one-hot encoding) \(y \in \left\{\begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} , \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix} , \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix} \right\}\) and your prediction is \(\hat{y} \in \left[0, 1\right]^{3}\), then your score is computed as \(\displaystyle\sum_{i=1}^{n} \displaystyle\sum_{k=0}^{2} y_{i k} \cdot \hat{y}_{i k}\) with \(n = 90\), that is:
➩ There will be 30 sets of 3 items in total, 10 from me (posted before the competition), 10 from team 1, and 10 from team 2, possibly at most 10 more from other students in the class.
➩ You get higher score if your network is more certain about the correct prediction.
➩ In case of ties (after rounding), the networks with fewer units will have higher rankings.
📗 You can use the following tool to generate your training set (or create your own training images by drawing similar shapes: must be 32 pixels by 32 pixels grayscale images; the sizes of the shapes will be fixed at radius 1 for the competition):
Create image: (you can rotate and change the camera angle)
Convert to pixels:
Or randomly rotate and convert (max 1000 at a time, could be slow, wait until this number goes down to 1):
You can also control the noise level (0 to 100): (or you can add noise to the images yourself, i.e. randomly change the color of every pixel with a small probability).
Your submission should contain (i) your player name (not necessarily your real name), (ii) your team (0, 1, or 2), (iii) your network weights, (iv) [optional] your test set.