Character recognition neural net topology/design

I'm building a neural net for classifying characters in pictures. The input can be any character a-z, lowercase and uppercase. I only care about classifying the characters, and not the case, so the neural net has an output vector of length 26; one for each character. It makes sense, intuitively, to have a hidden layer of size 26*2 just upstream of the output layer. It also makes intuitive sense for this layer not to be fully connected to the output layer, but instead having two and two hidden nodes connect to each output node.

I have some questions:

a) Does this make sense? I'm getting about 75 % success rate on a pretty hard data set with just one hidden layer, but I'm not certain on how to improve from there.

b) If so, What activation function should I use from the hidden layer with 26*2 nodes to the output layer? Maybe I should use an OR function for this, since both the lowercase and the uppercase version of a character should output for a single character.

c) Would it be wiser to have 26*2 output nodes instead, and just combine lowercase and uppercase outputs after the neural net?

• Which dataset do you use? – Martin Thoma Apr 19 '16 at 21:18
• It's an 8-bit grayscale version of the English-only chars74k data-set (ee.surrey.ac.uk/CVSSP/demos/chars74k). I don't know if it's hard compared to other data sets, or what success rate to expect, but I sure can't make out some of the characters using my own eyes. – tsorn Apr 19 '16 at 21:32
• How are you measuring success rate? A quick review of published papers would put 75% accuracy at better than state-of-the-art, which seems unlikely (I might be misunderstanding some context though). The official measure is to use 15 exemplars from each class for training and the other 15 for testing. Are you using test/train split in that way to assess your model? – Neil Slater Apr 19 '16 at 21:48
• I don't use the official way to measure. I train on 90 % of the data and test on the remaining 10 %. Are they only training with 15*26 examples? That sounds low to me. If they are only training with ~400 examples and I'm using ~67k, that might explain the difference. – tsorn Apr 19 '16 at 22:26

Your design makes some sense, but there is no need to limit connections even if you expect to represent probabilities of upper/lower case separately, because they will interact usefully. E.g if the character could most likely be one of o, O, Q, G then this might be useful information to choose the correct one.