1. Task description
Based on the codes given in Tutorial: Multilayer Neural Network, you are
required to accomplish a multi-class classification task on the provided
You must guarantee that the submitted codes are self-complete, and the
newly implemented modules can be successfully run in common python
You are NOT allowed to use Deep Learning frameworks (e.g. PyTorch,
Tensorflow, Caffe, and KERAS), or any kinds of auto-grad tools (e.g.
Scientific computing packages, such as NumPy and SciPy, are acceptable.
If you have any question about the assignment, please contact:
Shumin Kong email@example.com
The dataset can be downloaded from Canvas
There are 10 classes in this dataset. The dataset has been splited into
training set and test set, where the training set has 60,000 examples and the
test set has 10,000 examples.
To read the hdf5 file and load the data into a numpy array, use the following
with h5py.File(‘train_128.h5′,’r’) as H:
data = np.copy(H[‘data’])
with h5py.File(‘train_label.h5′,’r’) as H:
label = np.copy(H[‘label’])
The performance of your neural network will be evaluated in terms of the
accuracy metric, i.e.
�������� = number of correct classifications
total number of test examples
3. Instructions to hand in the assignment
3.1 Go to Canvas and upload the following files/folders compressed
together as a zip file
a) Report (a pdf file)
The report should include each member’s details (student ID and name)
b) Code (a folder)
i. Algorithm (a sub-folder)
Your code (could be multiple files or a project)
ii. Input (a sub-folder)
Empty. Please do NOT include the dataset in the zip file as they
are too large. We will copy the dataset to the input folder when
we test the code.
iii. Output (a sub-folder)
“Predicted_labels.h5” – This file contains the predicted labels of
test exampels and must be in the output folder. We will use this
file for grading.
If you work as a group, only one student needs to submit the zip file
which must be named as student ID numbers of all group members
separated by underscores. E.g. “xxxxxxxx_xxxxxxxx_xxxxxxxx .zip”
3.2 Your submission should include the report and the code. A plagiarism
checker will be used. Clearly provide instructions on how to run your
code in the appendix of the report.
3.3 The report must clearly show (i) details of your modules, (ii) the
predicted results from your classifier on test examples, (iii) run-time,
and (iv) hardware and software specifications of the computer that you
used for performance evaluations.
3.4 There is no special format to follow for the report but please make it
as clear as possible and similar to a research paper.
3.5 Remember, the due date to submit them on Canvas is 1-May-2020,
Suppose you hand in work after the deadline:
If you have not been granted special consideration or arrangements
– A penalty of 5% of the maximum marks will be taken per day (or part)
late. After ten days, you will be awarded a mark of zero.
– e.g. If an assignment is worth 40% of the final mark and you are one
hour late submitting, then the maximum marks possible would be 38%.
– e.g. If an assignment is worth 40% of the final mark and you are 28 hours
late submitting, then the maximum marks possible marks would be 36%.
– Warning: submission sites get very slow near deadlines
– Submit early; you can resubmit if there is time before the deadline.
4. Marking scheme
Category Criterion Marks Comments
– What’s the aim of the study?
– Why is the study important?
– Pre-processing (if any)
– The principle of different modules
Experiments and results 
– Accuracy (Figures or Tables)
– Extensive analysis (ablation studies,
– Meaningful and relevant person reflection
– Meaningful conclusions based on results
– At the discretion of the marker: for
impressing the marker, excelling
expectation, etc. Examples include fast
code, using LATEX, etc.
More than one hidden layer 
ReLU activation 
Weight decay 
Momentum in SGD 
Softmax and cross-entropy loss 
Mini-batch training 
Batch Normalization 
Bonous [+5] Top-10 Accuracy
Code runs within a feasible time 
Well organized, commented and
Penalties [-] Badly written code: [-20]
Not including instructions on how to
run your code: [-30]