The files contained in this directory have the following significance : - pattern_src a set of "grid" files corresponding to each of the patterns in tc.pat (see descriptive section below for more details) - tc.pat a set of pattern files (see descriptive section below for more details) - tc.readme this file **NOTE : training on this pattern set will likely take many epochs (the best configurations i've tried required ~400) T-C Description --------------- The pattern file 'tc.pat' contains 56 81-input, 2-output patterns. The inputs of each pattern correspond to a 9X9 "grid" of bits -- the network's input vector for each grid is just the grid's elements in row major order starting from the top of the grid. The task of the network is to detect any number of 5-bit T and/or C patterns on an input grid. For example, the following grids both contain occurrences of both T and C patterns : Grid 1: Grid 2: 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 The outputs corresponding to a particular grid are determined as follows : Output | Grid Pattern Type ---------------------------- 0 1 | grid contains one or more C patterns, but no T patterns and | no unrecognized patterns 1 0 | grid contains one or more T patterns, but no C patterns and | no unrecognized patterns 1 1 | grid contains at least one T and one C pattern, and contains | no unrecognized patterns 0 0 | grid contains no T or C patterns, or contains an unrecognized | pattern The only, perhaps, confusing thing about this scheme is that the T or C patterns may be either represented as a pattern of 1's on a background of 0's, or, alternatively, may be represented as a pattern of 0's on a background of 1's. If either of these interpretations of a particular grid allow the network to produce an output other than 0 0 (the "rejecting" output), then that interpretation is applied -- if neither interpretation results in only T and/or C patterns, then 0 0 is the output. In the cases of the example grids shown above, both Grid 1 and Grid 2 would result in the output 1 1. Also, notice that the T's and C's can occur at any position and orientation, so long as they do not "touch" any other T's or C's. The grid below would be rejected (produce 0 0 as output) since the two C's it contains "touch" : Grid 3: 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 Obviously, not all possible patterns are included in the training set in tc.pat -- furthermore, I'm not even sure how well a trained network will generalize to unseen patterns. Thus, it might be fun/interesting to make up new patterns and see how well a trained net handles them, or to investigate whether including them in the training set improves or hinders learning rate and/or generalization.