Description
Part 1: Implementation [7 points]
In the directory gestures, there is a set of images1
that display “down” gestures (i.e., thumbs-down
images) or other gestures. In this assignment, you are required to implement the Back Propagation
algorithm for Feed Forward Neural Networks to learn the down gestures from training instances available
in downgesture_train.list. The label of an image is 1 if the word “down” is in its file name; otherwise
the label is 0.
The pixels of an image use the gray scale ranging from 0 to 1. In your network, use one
input layer, one hidden layer of size 100, and one output perceptron. Use the value 0.1 for the learning
rate. For each perceptron, use the sigmoid function Ɵ(s) = 1/(1+e-s
).
Use 1000 training epochs; initialize
all the weights randomly between -0.01 and 0.01 (you can also choose your own initialization approach,
as long as it works); and then use the trained network to predict the labels for the gestures in the test
images available in downgesture_test.list. For the error function, use the standard squared error. Output
your predictions and accuracy.
The image file format is “pgm” <https://netpbm.sourceforge.net/doc/pgm.html>. Please follow the link
for the format details. You can either use a third-party library to read these image files or easily read them
yourself.
You can write your programs in any programming language. However, you will have to implement the
algorithms yourself instead of using library functions (except for reading “pgm” image files). In your
report, please provide a description of the data structures you use, any code-level optimizations you
perform, any challenges you face, and of course, the requested outputs.
Part 2: Software Familiarization [Optional – No Credit]
Do your own research and find out about library functions that offer good implementations of the Back
Propagation algorithm for Feed Forward Neural Networks. Learn how to use them. Compare them
against your implementations and suggest some ideas for how you can improve your code. Describe all
this in your report.
Part 3: Applications [Optional – No Credit]
Do your own research and describe some interesting applications of Neural Networks in general.
Submission Guidelines
In your report, please include the names of all group members and mention their individual contributions.
The maximum number of the members in a team is 2. The report should be in a PDF format. Your
submission should include the code as well as the report and is due before 04/05, 11:59pm in an archive
in a zip, tar.gz or tar.xz format.
Only one submission is required for each group by one of the group
members. Please submit your homework on D2L (do NOT email the homework to the instructor or the
TA).
1
source: https://www.cs.cmu.edu/~tom/faces.html