CSCI 335 - Project #5

Fall 2011

Due: Tuesday, October 4, beginning of class


  • You may work in teams of two on this assignment, submitting a common solution.
  • Download a drawing program.
  • Within the handwriting directory is the package handwriting.neural. Key elements of Perceptron.java and NeuralNet.java are missing. Use the pseudocode from class as a guide for filling in the gaps. Then test your solution using the SupervisedLearner program to train networks to match "and" and "xor".
  • Using the drawing editor, draw 10 samples each of two letters. For each drawing, select the "Record Drawing" menu option when it is complete. For the label, use the letter that you drew. Once this is complete, save the file (using the Save command on the File menu).
  • Devise an input encoding and an output decoding for the problem of recognizing Drawing objects. Implement this scheme by extending the RecognizerAI class. Your implementation will include an object of the NeuralNet class.
  • Modify the NetCreator inner class (of DrawingEditor.java) to create an instance of your extension of RecognizerAI. Create a network and test it informally by creating new drawings and seeing how it identifies them.
  • Create a second set of samples of your two letters, and save them under a different filename.
  • The program RandomTester gives baseline data about the recognition performance of an untrained network. Create a similar program to give data about a trained network. Your program will need two files: the training set (your first set) and a test set (your second set). It should also be given a learning rate and a number of hidden nodes, as well as a time-out for it to give up on training if the network fails to converge. It should also be given a number of networks to test. Your program should report:
  • Experiment with at least:
  • Once you can train a network to distinguish two letters, expand your training and test sets to train it to distinguish three letters. Continue iterating this process until your network can distinguish at least eight different letters. Extra credit will be given for networks that distinguish more letters than this (proportionate to the additional classifiable letters).
  • Write a report detailing your approach, your data, and your conclusions.
  • Submit using Sauron