cuda-convnet based convolution and max-pooling layers + utilities. The layers can be used as drop-in replacements for the default Conv2DLayer and MaxPool2DLayer. This means that they shuffle the inputs from bc01 to c01b and the outputs from c01b to bc01 as needed. This behavior can be turned off with the 'dimshuffle' keyword argument. If it is turned off, the user is responsible for appropriately shuffling the layer input and output. nntools.layers.cuda_convnet.bc01_to_c01b and .c01b_to_bc01 are provided for this purpose.
defer pylearn2 imports to the classes that need them, so that nntools.layers.cuda_convnet can always be imported, even if pylearn2 is not available.
Merge pull request #39 from benanne/cuda_convnet

cuda-convnet based convolution and max-pooling layers + utilities.
added NINLayer, might need some tweaking
NINLayer_c01b, optimized for c01b layout (to use with the cuda-convnet based layers with dimshuffle=False)
added GlobalPoolLayer and a utility function to count the number of parameters of a model
added input padding functionality
added FeaturePoolLayer, useful for maxout
add FeatureWTALayer, useful for channel-out / WTA / compete-to-compute
modified ConcatLayer to use a different implementation, the gradient of T.concatenate does not have a GPU implementation
Added functional tests for the examples.

These won't run unless you pass the --runslow argument (which the Travis
config uses).  They should help us make sure that no pull requests or other
commits break any of the examples.  At least not in a way where the example
raises an exception.
Theano requires libblas.so
Try this combination of requirements (from Theano's own travis.yml)
Fix off by one error in training loop.
Using 'travis_wait' should help with 10min timeout.
Fix example tests that fail because of pylearn2 ImportError