Here are some of the things that influence your training speed:
- Number of weights in your network
- Speed of your CPU
- Package you are using (mostly engine it is working on, in PyLearn this is Theano)
- If all your data fits in memory or you are reading from disk in between batches
With regards to network design the only thing you can really do is make the network more shallow to reduce the number of weights. To reduce the number of epochs there might be other options like adding residual connections but that will not decrease the training time of 1 epoch.
Without more information it is unclear where the bottleneck is, but 20 hours for one epoch seems a bit high. The easiest and biggest improvement you will be able to get is to use a good GPU, which should be possible using pylearn since it is built on top of Theano.