====== Assignment: Neural Network ====== **📅 Deadline:** 11.12.2024 21:59 **🏦 Points:** 8 **Note: If you downloaded the template before November 7th at 11:50, please download the updated version. The previous version erroneously evaluated the Softmax layer instead of the Cross-entropy tests. In the case that you find any mistakes, please contact Jakub Paplhám at paplhjak@fel.cvut.cz** ===== Task Description ===== In this assignment, you are tasked with implementing the forward, backward, and parameter messages required for training of a simple neural network. You can find the complete description of the assignment in the {{ :courses:be4m33ssu:homeworks:hw_assignment_neuralnet.pdf | Assignment PDF}}. You are provided with a {{ :courses:be4m33ssu:homeworks:hw_neural_network_template_7_11_2024.zip |template}} containing the following files that you **do not** need to modify: * **datasets.py**: Loads dummy datasets. This script is not used in this homework. You do not need to modify this file. * **main.py**: This file includes functions that run your code, compare it against the reference, and save the results. You do not need to modify this file. * **requirements.txt**: PIP requirements for the homework, however, most of your existing environments should be sufficient. * **run.py**: Runs `train.py` to train the neural network on dummy datasets. This script is not used in this homework. You do not need to modify this file. * **train.py**: Trains the neural network. This script is not used in this homework. You do not need to modify this file. * **test-cases**: A folder containing public test cases to help you verify your implementation before submitting to [[https://cw.felk.cvut.cz/brute/student/course/BE4M33SSU/neuralnet|BRUTE]]. * **utils.py**: Contains helper functions for loading and saving data. You do not need to modify this file. The template also includes the following files which you **do** need to modify: * **linear_layer.py**: Implements the linear layer. * **losses.py**: Implements the cross entropy loss layer. * **mlp.py**: Implements a multi-layer-perceptron. * **relu_layer.py**: Implements the rectified linear unit layer. * **softmax_layer.py**: Implements the softmax layer. Your objective is to implement the forward, backward, and parameter messages in the previously mentioned files. You can find them by searching for **"TODO"** in the python files. All python files must be stored in the root of the .zip sent for submission. ===== How to Test ===== After completing your implementation, you can test your solution using the following commands before submitting it to BRUTE: ---- == Public Test Cases == You can validate your code by running: python main.py test-cases/public/instances/instance_1.json python main.py test-cases/public/instances/instance_2.json python main.py test-cases/public/instances/instance_3.json For all of these instances, the expected output is: Linear: forward: Test OK delta: Test OK grad_W: Test OK grad_b: Test OK ReLU: forward: Test OK delta: Test OK Softmax: forward: Test OK delta: Test OK Cross Entropy: forward: Test OK delta: Test OK Cross Entropy For Softmax Logits: forward: Test OK delta: Test OK MLP: Linear_3 gradient: Test OK Linear_2 gradient: Test OK Linear_1 gradient: Test OK ===== Submission Guidelines ===== * Submit the completed code as a .zip via BRUTE. * All python files must be stored in the root of the .zip sent for submission. * Make sure your implementation passes the test cases provided above. Good luck! 😊