Project 4
Spring 2016
Due: Fri, Apr 15 @ 11:59 P.M.
10 points
Building upon your implementations for p1, p2, and p3, implement Zurada's backpropagation training algorithm for multi-layer feed-forward neural networks. Your implementation should also include a routine to convert nominal attributes into a binary or linear encoding scheme.
The implementation must be general in the sense that it must work for all data sets with nominal attributes and nominal class labels. Our convention is that the last attribute of the attribute declarations is the class label. The overall logic of the implementation must be the same as that for the previous project.
Here are some new data sets:
Implement your neural network a single executable. No windows. No menus. No prompts. Just do it.
As we have discussed in class, training neural networks is computationally expensive. Develop your implementation by training and testing on the small data sets, such as bikes and xor, until you are confident that everything seems to be working. I would recommend using the hold-out method for larger data sets, such as votes and mushroom. I would not recommend using k-fold cross-validation, although if you're using your own laptop, and you want to convert electricity to heat, then go ahead.
If you're using cs-class, please be mindful of other users on the system. If you want to kick off a big training job in the background and go to the Tombs, please be nice and use nice. For example:
cs-class$ nice backprop -t cats-and-dogs.mff < /dev/null >| output &This command runs backprop with a nice priority. The fancy redirects prevent ssh from hanging when you log out and write the output of backprop to the file named output. The final ampersand puts the job in to the background, where it will run for a long time. At this point, you can log out and head over the Tombs.
When you reconnect to cs-class, you can check to see if the job is still running by looking for the name of your executable —in this case, backprop—in the list of active processes:
cs-class$ ps -ef | grep backprop maloofm 16205 1 98 15:37 ? 00:00:13 backprop -t cats-and-dogs.mff maloofm 17920 16238 0 15:45 pts/5 00:00:00 grep backpropYou can examine the contents of the output file by typing:
cs-class$ more outputIf for some reason your implementation of backprop seems like it will never terminate, please do not leave it running. To kill a job, look in the list of active processes for the job's ID:
cs-class$ ps -ef | grep backprop maloofm 16205 1 98 15:37 ? 00:00:13 backprop -t cats-and-dogs.mff maloofm 17920 16238 0 15:45 pts/5 00:00:00 grep backpropIn this case, it is 16205. Use the kill command to kill the process. It should no longer appear in the process list.
cs-class$ kill 16205 cs-class$ ps -ef | grep backprop maloofm 19129 16238 0 15:55 pts/5 00:00:00 grep backprop
// // Name // E-mail Address // Platform: Windows, MacOS, Linux, Solaris, etc. // Language/Environment: gcc, g++, java, g77, ruby, python. // // In accordance with the class policies and Georgetown's Honor Code, // I certify that, with the exceptions of the class resources and those // items noted below, I have neither given nor received any assistance // on this project. //
When you are ready to submit your program for grading, create a zip file of the directory containing only your project's source and build instructions, and upload it to Blackboard.
Copyright © 2019 Mark Maloof. All Rights Reserved. This material may not be published, broadcast, rewritten, or redistributed.