pylearn2 tutorial: Convolutional network

by Ian Goodfellow

Introduction

This ipython notebook will teach you the basics of how convolutional networks work, and show you how to use multilayer perceptrons in pylearn2.

To do this, we will go over several concepts:

Part 1: What pylearn2 is doing for you in this example

  • Review of multilayer perceptrons, and how convolutional networks are similar

  • Convolution and the equivariance property

  • Pooling and the invariance property

  • A note on using convolution in research papers

Part 2: How to use pylearn2 to train a convolutional network

- pylearn2 Spaces

- MNIST classification example


Note that this won't explain in detail how the individual classes are implemented. The classes follow pretty good naming conventions and have pretty good docstrings, but if you have trouble understanding them, write to me and I might add a part 3 explaining how some of the parts work under the hood.

Please write to pylearn-dev@googlegroups.com if you encounter any problem with this tutorial.

Requirements

Before running this notebook, you must have installed pylearn2. Follow the download and installation instructions if you have not yet done so.

This tutorial also assumes you already know about multilayer perceptrons, and know how to train and evaluate a multilayer perceptron in pylearn2. If not, work through multilayer_perceptron.ipynb before starting this tutorial.

It's also strongly recommend that you run this notebook with THEANO_FLAGS="device=gpu". This is a processing intensive example and the GPU will make it run a lot faster, if you have one available. Execute the next cell to verify that you are using the GPU.


In [1]:
import theano
print theano.config.device


gpu0
Using gpu device 0: Tesla K40c

Part 1: What pylearn2 is doing for you in this example

In this part, we won't get into any specifics of pylearn2 yet. We'll just discuss what a convolutional network is. If you already know about convolutional networks, feel free to skip to part 2.

Review of multilayer perceptrons, and how convolutional networks are similar

In multilayer_perceptron.ipynb, we saw how the multilayer perceptron (MLP) is a versatile model that can do many things. In this series of tutorials, we think of it as a classification model that learns to map an input vector $x$ to a probability distribution $p(y\mid x)$ where $y$ is a categorical value with $k$ different values. Using a dataset $\mathcal{D}$ of $(x, y)$, we can train any such probabilistic model by maximizing the log likelihood,

$$ \sum_{x,y \in \mathcal{D} } \log P(y \mid x). $$

The multilayer perceptron defines $P(y \mid x)$ to be the composition of several simpler functions. Each function being composed can be thought of as another "layer" or "stage" of processing.

A convolutional network is nothing but a multilayer perceptron where some layers take a very special form, which we will call "convolutional layers". These layers are specially designed for processing inputs where the indices of the elements have some topological significance.

For example, if we represent a grayscale image as an array $I$ with the array indices corresponding to physical locations in the image, then we know that the element $I_{i,j}$ represents something that is spatially close to the element $I_{i+1,j}$. This is in contrast to a vector representation of an image. If $I$ is a vector, then $I_i$ might not be very close at all to $I_{i+1}$, depending on whether the image was converted to vector form in row-major or column major format and depending on whether $i$ is close to the end of a row or column.

Other kinds of data with topological in the indices include time series data, where some series $S$ can be indexed by a time variable $t$. We know that $S_t$ and $S_{t+1}$ come from close together in time. We can also think of the (row, column, time) indices of video data as providing topological information.

Suppose $T$ is a function that can translate (move) an input in the space defined by its indices by some amount $x$. In other words, $T(S,x)_i = S_j$ where $j=i-x$ (a MathJax or ipython bug seems to prevent me from putting $i-x$ in a subscript). Convolutional layers are an example of a function $f$ designed with the property $f(T(S,x)) \approx f(S)$ for small x.

This means if a neural network can recognize a handwritten digit in one position, it can recognize it when it is slightly shifted to a nearby position. Being able to recognize shifted versions of previously seen inputs greatly improves the generalization performance of convolutional networks.

Convolution and the equivariance property

TODO

Pooling and the invariance property

TODO

A note on using convolution in research papers

TODO

Part 2: How to use pylearn2 to train an MLP

Now that we've described the theory of what we're going to do, it's time to do it! This part describes how to use pylearn2 to run the algorithms described above.

As in the MLP tutorial, we will use the convolutional net to do optical character recognition on the MNIST dataset.

pylearn2 Spaces

In many places in pylearn2, we would like to be able to process several different kinds of data. In previous tutorials, we've just talked about data that could be preprocessed into a vector representation. Our algorithms all worked on vector spaces. However, it's often useful to format data in other ways. The pylearn2 Space object is used to specify the format for data. The VectorSpace class represents the typical vector formatted data we've used so far. The only thing it needs to encode about the data is its dimensionality, i.e., how many elements the vector has. In this tutorial we will start to explicitly represent images as having 2D structure, so we need to use the Conv2DSpace. The Conv2DSpace object describes how to represent a collection of images as a 4-tensor.

One thing the Conv2DSpace object needs to describe is the shape of the space--how big is the image in terms of rows and columns of pixels? Also, the image may have multiple channels. In this example, we use a grayscale input image, so the input only has one channel. Color images require three channels to store the red, green, and blue pixels at each location. We can also think of the output of each convolution layer as living in a Conv2DSpace, where each kernel outputs a different channel. Finally, the Conv2DSpace specifies what each axis of the 4-tensor means. The default is for the first axis to index over different examples, the second axis to index over channels, and the last two to index over rows and columns, respectively. This is the format that theano's 2D convolution code uses, but other libraries exist that use other formats and we often need to convert between them.

MNIST classification example

Setting up a convolutional network in pylearn2 is essentially the same as setting up any other MLP. In the YAML experiment description below, there are really just two things to take note of.

First, rather than using "nvis" to specify the input that the MLP will take, we use a parameter called "input_space". "nvis" is actually shorthand; if you pass an integer n to nvis, it will set input_space to VectorSpace(n). Now that we are using a convolutional network, we need the input to be formatted as a collection of images so that the convolution operator will have a 2D space to work on.

Second, we make a few layers of the network be "ConvRectifiedLinear" layers. Putting some convolutional layers in the network makes those layers invariant to small translations, so the job of the remaining layers is much easier.

We don't need to do anything special to make the Softmax layer on top work with these convolutional layers. The MLP class will tell the Softmax class that its input is now coming from a Conv2DSpace. The Softmax layer will then use the Conv2DSpace's convert method to convert the 2D output from the convolutional layer into a batch of vector-valued examples.

The model and training is defined in conv.yaml file. Here we load it and set some of it's hyper-parameters.


In [2]:
!wget https://raw.githubusercontent.com/lisa-lab/pylearn2/master/pylearn2/scripts/tutorials/convolutional_network/conv.yaml


--2015-02-18 15:15:15--  https://raw.githubusercontent.com/lisa-lab/pylearn2/master/pylearn2/scripts/tutorials/convolutional_network/conv.yaml
Resolving raw.githubusercontent.com... 23.235.43.133
Connecting to raw.githubusercontent.com|23.235.43.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3239 (3.2K) [text/plain]
Saving to: `conv.yaml'

100%[======================================>] 3,239       --.-K/s   in 0s      

2015-02-18 15:15:15 (99.2 MB/s) - `conv.yaml' saved [3239/3239]


In [2]:
train = open('conv.yaml', 'r').read()
train_params = {'train_stop': 50000,
                    'valid_stop': 60000,
                    'test_stop': 10000,
                    'batch_size': 100,
                    'output_channels_h2': 64, 
                    'output_channels_h3': 64,  
                    'max_epochs': 500,
                    'save_path': '.'}
train = train % (train_params)
print train


!obj:pylearn2.train.Train {
    dataset: &train !obj:pylearn2.datasets.mnist.MNIST {
        which_set: 'train',
        start: 0,
        stop: 50000
    },
    model: !obj:pylearn2.models.mlp.MLP {
        batch_size: 100,
        input_space: !obj:pylearn2.space.Conv2DSpace {
            shape: [28, 28],
            num_channels: 1
        },
        layers: [ !obj:pylearn2.models.mlp.ConvRectifiedLinear {
                     layer_name: 'h2',
                     output_channels: 64,
                     irange: .05,
                     kernel_shape: [5, 5],
                     pool_shape: [4, 4],
                     pool_stride: [2, 2],
                     max_kernel_norm: 1.9365
                 }, !obj:pylearn2.models.mlp.ConvRectifiedLinear {
                     layer_name: 'h3',
                     output_channels: 64,
                     irange: .05,
                     kernel_shape: [5, 5],
                     pool_shape: [4, 4],
                     pool_stride: [2, 2],
                     max_kernel_norm: 1.9365
                 }, !obj:pylearn2.models.mlp.Softmax {
                     max_col_norm: 1.9365,
                     layer_name: 'y',
                     n_classes: 10,
                     istdev: .05
                 }
                ],
    },
    algorithm: !obj:pylearn2.training_algorithms.sgd.SGD {
        batch_size: 100,
        learning_rate: .01,
        learning_rule: !obj:pylearn2.training_algorithms.learning_rule.Momentum {
            init_momentum: .5
        },
        monitoring_dataset:
            {
                'valid' : !obj:pylearn2.datasets.mnist.MNIST {
                              which_set: 'train',
                              start: 50000,
                              stop:  60000
                          },
                'test'  : !obj:pylearn2.datasets.mnist.MNIST {
                              which_set: 'test',
                              stop: 10000
                          }
            },
        cost: !obj:pylearn2.costs.cost.SumOfCosts { costs: [
            !obj:pylearn2.costs.cost.MethodCost {
                method: 'cost_from_X'
            }, !obj:pylearn2.costs.mlp.WeightDecay {
                coeffs: [ .00005, .00005, .00005 ]
            }
            ]
        },
        termination_criterion: !obj:pylearn2.termination_criteria.And {
            criteria: [
                !obj:pylearn2.termination_criteria.MonitorBased {
                    channel_name: "valid_y_misclass",
                    prop_decrease: 0.50,
                    N: 10
                },
                !obj:pylearn2.termination_criteria.EpochCounter {
                    max_epochs: 500
                },
            ]
        },
    },
    extensions:
        [ !obj:pylearn2.train_extensions.best_params.MonitorBasedSaveBest {
             channel_name: 'valid_y_misclass',
             save_path: "./convolutional_network_best.pkl"
        }, !obj:pylearn2.training_algorithms.learning_rule.MomentumAdjustor {
            start: 1,
            saturate: 10,
            final_momentum: .99
        }
    ]
}



Now, we use pylearn2's yaml_parse.load to construct the Train object, and run its main loop. The same thing could be accomplished by running pylearn2's train.py script on a file containing the yaml string.

Execute the next cell to train the model. This will take several minutes and possible as much as a few hours depending on how fast your computer is.

Make sure the dataset is present:


In [41]:
%%bash
mkdir -p /disk/scratch/neuroglycerin/mnist/
cd /disk/scratch/neuroglycerin/mnist/
wget http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
gzip -d *
cd -


/afs/inf.ed.ac.uk/user/s08/s0805516/repos/neukrill-net-work/notebooks

And make sure the pylearn2 environment variable for it is set:


In [38]:
%env PYLEARN2_DATA_PATH=/disk/scratch/neuroglycerin
!echo $PYLEARN2_DATA_PATH


env: PYLEARN2_DATA_PATH=/disk/scratch/neuroglycerin
/disk/scratch/neuroglycerin

In [9]:
%pdb


Automatic pdb calling has been turned ON

In [11]:
from pylearn2.config import yaml_parse
train = yaml_parse.load(train)
train.main_loop()


Input shape: (28, 28)
Detector space: (24, 24)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-a29d25125a51> in <module>()
      1 from pylearn2.config import yaml_parse
----> 2 train = yaml_parse.load(train)
      3 train.main_loop()

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/config/yaml_parse.pyc in load(stream, environ, instantiate, **kwargs)
    211     proxy_graph = yaml.load(string, **kwargs)
    212     if instantiate:
--> 213         return _instantiate(proxy_graph)
    214     else:
    215         return proxy_graph

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/config/yaml_parse.pyc in _instantiate(proxy, bindings)
    154         bindings = {}
    155     if isinstance(proxy, Proxy):
--> 156         return _instantiate_proxy_tuple(proxy, bindings)
    157     elif isinstance(proxy, dict):
    158         # Recurse on the keys too, for backward compatibility.

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/config/yaml_parse.pyc in _instantiate_proxy_tuple(proxy, bindings)
    119                                           'supported in proxy instantiation')
    120             kwargs = dict((k, _instantiate(v, bindings))
--> 121                           for k, v in six.iteritems(proxy.keywords))
    122             obj = checked_call(proxy.callable, kwargs)
    123         try:

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/config/yaml_parse.pyc in <genexpr>((k, v))
    119                                           'supported in proxy instantiation')
    120             kwargs = dict((k, _instantiate(v, bindings))
--> 121                           for k, v in six.iteritems(proxy.keywords))
    122             obj = checked_call(proxy.callable, kwargs)
    123         try:

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/config/yaml_parse.pyc in _instantiate(proxy, bindings)
    154         bindings = {}
    155     if isinstance(proxy, Proxy):
--> 156         return _instantiate_proxy_tuple(proxy, bindings)
    157     elif isinstance(proxy, dict):
    158         # Recurse on the keys too, for backward compatibility.

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/config/yaml_parse.pyc in _instantiate_proxy_tuple(proxy, bindings)
    120             kwargs = dict((k, _instantiate(v, bindings))
    121                           for k, v in six.iteritems(proxy.keywords))
--> 122             obj = checked_call(proxy.callable, kwargs)
    123         try:
    124             obj.yaml_src = proxy.yaml_src

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/utils/call_check.pyc in checked_call(to_call, kwargs)
     97     """
     98     try:
---> 99         return to_call(**kwargs)
    100     except TypeError:
    101         check_call_arguments(to_call, kwargs)

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/models/mlp.pyc in __init__(self, layers, batch_size, input_space, input_source, target_source, nvis, seed, layer_name, monitor_targets, **kwargs)
    486             self.input_space = input_space
    487 
--> 488             self._update_layer_input_spaces()
    489         else:
    490             self._nested = True

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/models/mlp.pyc in _update_layer_input_spaces(self)
    551         layers = self.layers
    552         try:
--> 553             layers[0].set_input_space(self.get_input_space())
    554         except BadInputSpaceError as e:
    555             raise TypeError("Layer 0 (" + str(layers[0]) + " of type " +

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/sandbox/rnn/models/mlp_hook.py in outer(self, input_space)
    335                         self._requires_reshape = True
    336                         input_space = input_space.space
--> 337             return set_input_space(self, input_space)
    338         return outer
    339 

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/sandbox/rnn/models/mlp_hook.py in outer(self, input_space)
    335                         self._requires_reshape = True
    336                         input_space = input_space.space
--> 337             return set_input_space(self, input_space)
    338         return outer
    339 

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/models/mlp.pyc in set_input_space(self, space)
   3096         logger.info('Detector space: {0}'.format(self.detector_space.shape))
   3097 
-> 3098         self.initialize_output_space()
   3099 
   3100     @wraps(Layer._modify_updates)

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/models/mlp.pyc in initialize_output_space(self)
   3026                                    pool_shape=self.pool_shape,
   3027                                    pool_stride=self.pool_stride,
-> 3028                                    image_shape=self.detector_space.shape)
   3029             elif self.pool_type == 'mean':
   3030                 dummy_p = mean_pool(bc01=dummy_detector,

/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/models/mlp.pyc in max_pool(bc01, pool_shape, pool_stride, image_shape, try_dnn)
   3568                            col_within_pool:col_stop:cs]
   3569                 cur.name = ('max_pool_cur_' + bc01.name + '_' +
-> 3570                             str(row_within_pool) + '_' + str(col_within_pool))
   3571                 if mx is None:
   3572                     mx = cur

TypeError: cannot concatenate 'str' and 'NoneType' objects
> /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/models/mlp.py(3570)max_pool()
   3569                 cur.name = ('max_pool_cur_' + bc01.name + '_' +
-> 3570                             str(row_within_pool) + '_' + str(col_within_pool))
   3571                 if mx is None:

ipdb> print bc01
<CudaNdarrayType(float32, 4D)>
ipdb> exit

Giving up on that yaml file. Trying the mnist.yaml that is supplied with the repo:


In [17]:
%pdb


Automatic pdb calling has been turned OFF

In [43]:
%run /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/train.py --time-budget 600 ~/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist.yaml


Input shape: (28, 28)
Detector space: (21, 21)
Output space: (10, 10)
Input shape: (10, 10)
Detector space: (9, 9)
Output space: (4, 4)
Input shape: (4, 4)
Detector space: (6, 6)
Output space: (3, 3)
INFO:pylearn2.training_algorithms.sgd:Parameter and initial learning rate summary:
Parameter and initial learning rate summary:
INFO:pylearn2.training_algorithms.sgd:	h0_W: 0.0500000007451
	h0_W: 0.0500000007451
INFO:pylearn2.training_algorithms.sgd:	h0_b: 0.0500000007451
	h0_b: 0.0500000007451
INFO:pylearn2.training_algorithms.sgd:	h1_W: 0.0500000007451
	h1_W: 0.0500000007451
INFO:pylearn2.training_algorithms.sgd:	h1_b: 0.0500000007451
	h1_b: 0.0500000007451
INFO:pylearn2.training_algorithms.sgd:	h2_W: 0.0500000007451
	h2_W: 0.0500000007451
INFO:pylearn2.training_algorithms.sgd:	h2_b: 0.0500000007451
	h2_b: 0.0500000007451
INFO:pylearn2.training_algorithms.sgd:	softmax_b: 0.0500000007451
	softmax_b: 0.0500000007451
INFO:pylearn2.training_algorithms.sgd:	softmax_W: 0.0500000007451
	softmax_W: 0.0500000007451
/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/utils/iteration.py:783: UserWarning: dataset is using the old iterator interface which is deprecated and will become officially unsupported as of July 28, 2015. The dataset should implement a `get` method respecting the new interface.
  warnings.warn("dataset is using the old iterator interface which "
INFO:pylearn2.training_algorithms.sgd:Compiling sgd_update...
Compiling sgd_update...
INFO:pylearn2.training_algorithms.sgd:Compiling sgd_update done. Time elapsed: 0:04:01.617780
Compiling sgd_update done. Time elapsed: 0:04:01.617780
INFO:pylearn2.monitor:compiling begin_record_entry...
compiling begin_record_entry...
INFO:pylearn2.monitor:compiling begin_record_entry done. Time elapsed: 3.089335 seconds
compiling begin_record_entry done. Time elapsed: 3.089335 seconds
INFO:pylearn2.monitor:Monitored channels: 
Monitored channels: 
INFO:pylearn2.monitor:	learning_rate
	learning_rate
INFO:pylearn2.monitor:	momentum
	momentum
INFO:pylearn2.monitor:	total_seconds_last_epoch
	total_seconds_last_epoch
INFO:pylearn2.monitor:	training_seconds_this_epoch
	training_seconds_this_epoch
INFO:pylearn2.monitor:	valid_h0_kernel_norms_max
	valid_h0_kernel_norms_max
INFO:pylearn2.monitor:	valid_h0_kernel_norms_mean
	valid_h0_kernel_norms_mean
INFO:pylearn2.monitor:	valid_h0_kernel_norms_min
	valid_h0_kernel_norms_min
INFO:pylearn2.monitor:	valid_h0_max_x.max_u
	valid_h0_max_x.max_u
INFO:pylearn2.monitor:	valid_h0_max_x.mean_u
	valid_h0_max_x.mean_u
INFO:pylearn2.monitor:	valid_h0_max_x.min_u
	valid_h0_max_x.min_u
INFO:pylearn2.monitor:	valid_h0_mean_x.max_u
	valid_h0_mean_x.max_u
INFO:pylearn2.monitor:	valid_h0_mean_x.mean_u
	valid_h0_mean_x.mean_u
INFO:pylearn2.monitor:	valid_h0_mean_x.min_u
	valid_h0_mean_x.min_u
INFO:pylearn2.monitor:	valid_h0_min_x.max_u
	valid_h0_min_x.max_u
INFO:pylearn2.monitor:	valid_h0_min_x.mean_u
	valid_h0_min_x.mean_u
INFO:pylearn2.monitor:	valid_h0_min_x.min_u
	valid_h0_min_x.min_u
INFO:pylearn2.monitor:	valid_h0_range_x.max_u
	valid_h0_range_x.max_u
INFO:pylearn2.monitor:	valid_h0_range_x.mean_u
	valid_h0_range_x.mean_u
INFO:pylearn2.monitor:	valid_h0_range_x.min_u
	valid_h0_range_x.min_u
INFO:pylearn2.monitor:	valid_h1_kernel_norms_max
	valid_h1_kernel_norms_max
INFO:pylearn2.monitor:	valid_h1_kernel_norms_mean
	valid_h1_kernel_norms_mean
INFO:pylearn2.monitor:	valid_h1_kernel_norms_min
	valid_h1_kernel_norms_min
INFO:pylearn2.monitor:	valid_h1_max_x.max_u
	valid_h1_max_x.max_u
INFO:pylearn2.monitor:	valid_h1_max_x.mean_u
	valid_h1_max_x.mean_u
INFO:pylearn2.monitor:	valid_h1_max_x.min_u
	valid_h1_max_x.min_u
INFO:pylearn2.monitor:	valid_h1_mean_x.max_u
	valid_h1_mean_x.max_u
INFO:pylearn2.monitor:	valid_h1_mean_x.mean_u
	valid_h1_mean_x.mean_u
INFO:pylearn2.monitor:	valid_h1_mean_x.min_u
	valid_h1_mean_x.min_u
INFO:pylearn2.monitor:	valid_h1_min_x.max_u
	valid_h1_min_x.max_u
INFO:pylearn2.monitor:	valid_h1_min_x.mean_u
	valid_h1_min_x.mean_u
INFO:pylearn2.monitor:	valid_h1_min_x.min_u
	valid_h1_min_x.min_u
INFO:pylearn2.monitor:	valid_h1_range_x.max_u
	valid_h1_range_x.max_u
INFO:pylearn2.monitor:	valid_h1_range_x.mean_u
	valid_h1_range_x.mean_u
INFO:pylearn2.monitor:	valid_h1_range_x.min_u
	valid_h1_range_x.min_u
INFO:pylearn2.monitor:	valid_h2_kernel_norms_max
	valid_h2_kernel_norms_max
INFO:pylearn2.monitor:	valid_h2_kernel_norms_mean
	valid_h2_kernel_norms_mean
INFO:pylearn2.monitor:	valid_h2_kernel_norms_min
	valid_h2_kernel_norms_min
INFO:pylearn2.monitor:	valid_h2_max_x.max_u
	valid_h2_max_x.max_u
INFO:pylearn2.monitor:	valid_h2_max_x.mean_u
	valid_h2_max_x.mean_u
INFO:pylearn2.monitor:	valid_h2_max_x.min_u
	valid_h2_max_x.min_u
INFO:pylearn2.monitor:	valid_h2_mean_x.max_u
	valid_h2_mean_x.max_u
INFO:pylearn2.monitor:	valid_h2_mean_x.mean_u
	valid_h2_mean_x.mean_u
INFO:pylearn2.monitor:	valid_h2_mean_x.min_u
	valid_h2_mean_x.min_u
INFO:pylearn2.monitor:	valid_h2_min_x.max_u
	valid_h2_min_x.max_u
INFO:pylearn2.monitor:	valid_h2_min_x.mean_u
	valid_h2_min_x.mean_u
INFO:pylearn2.monitor:	valid_h2_min_x.min_u
	valid_h2_min_x.min_u
INFO:pylearn2.monitor:	valid_h2_range_x.max_u
	valid_h2_range_x.max_u
INFO:pylearn2.monitor:	valid_h2_range_x.mean_u
	valid_h2_range_x.mean_u
INFO:pylearn2.monitor:	valid_h2_range_x.min_u
	valid_h2_range_x.min_u
INFO:pylearn2.monitor:	valid_objective
	valid_objective
INFO:pylearn2.monitor:	valid_y_col_norms_max
	valid_y_col_norms_max
INFO:pylearn2.monitor:	valid_y_col_norms_mean
	valid_y_col_norms_mean
INFO:pylearn2.monitor:	valid_y_col_norms_min
	valid_y_col_norms_min
INFO:pylearn2.monitor:	valid_y_max_max_class
	valid_y_max_max_class
INFO:pylearn2.monitor:	valid_y_mean_max_class
	valid_y_mean_max_class
INFO:pylearn2.monitor:	valid_y_min_max_class
	valid_y_min_max_class
INFO:pylearn2.monitor:	valid_y_misclass
	valid_y_misclass
INFO:pylearn2.monitor:	valid_y_nll
	valid_y_nll
INFO:pylearn2.monitor:	valid_y_row_norms_max
	valid_y_row_norms_max
INFO:pylearn2.monitor:	valid_y_row_norms_mean
	valid_y_row_norms_mean
INFO:pylearn2.monitor:	valid_y_row_norms_min
	valid_y_row_norms_min
INFO:pylearn2.monitor:Compiling accum...
Compiling accum...
INFO:pylearn2.monitor:graph size: 387
graph size: 387
INFO:pylearn2.monitor:Compiling accum done. Time elapsed: 0:01:35.487712
Compiling accum done. Time elapsed: 0:01:35.487712
/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/datasets/dense_design_matrix.py:1465: UserWarning: It looks like DefaultViewConverter.axes has been changed directly, please use the set_axes() method instead.
  "instead." % self.__class__.__name__)
INFO:pylearn2.monitor:Monitoring step:
Monitoring step:
INFO:pylearn2.monitor:	Epochs seen: 0
	Epochs seen: 0
INFO:pylearn2.monitor:	Batches seen: 0
	Batches seen: 0
INFO:pylearn2.monitor:	Examples seen: 0
	Examples seen: 0
INFO:pylearn2.monitor:	learning_rate: 0.0500000007451
	learning_rate: 0.0500000007451
INFO:pylearn2.monitor:	momentum: 0.500000536442
	momentum: 0.500000536442
INFO:pylearn2.monitor:	total_seconds_last_epoch: 0.0
	total_seconds_last_epoch: 0.0
INFO:pylearn2.monitor:	training_seconds_this_epoch: 0.0
	training_seconds_this_epoch: 0.0
INFO:pylearn2.monitor:	valid_h0_kernel_norms_max: 0.025620367378
	valid_h0_kernel_norms_max: 0.025620367378
INFO:pylearn2.monitor:	valid_h0_kernel_norms_mean: 0.0229787640274
	valid_h0_kernel_norms_mean: 0.0229787640274
INFO:pylearn2.monitor:	valid_h0_kernel_norms_min: 0.0195152796805
	valid_h0_kernel_norms_min: 0.0195152796805
INFO:pylearn2.monitor:	valid_h0_max_x.max_u: 0.0652698650956
	valid_h0_max_x.max_u: 0.0652698650956
INFO:pylearn2.monitor:	valid_h0_max_x.mean_u: 0.0386978723109
	valid_h0_max_x.mean_u: 0.0386978723109
INFO:pylearn2.monitor:	valid_h0_max_x.min_u: 0.0218468718231
	valid_h0_max_x.min_u: 0.0218468718231
INFO:pylearn2.monitor:	valid_h0_mean_x.max_u: 0.0253798943013
	valid_h0_mean_x.max_u: 0.0253798943013
INFO:pylearn2.monitor:	valid_h0_mean_x.mean_u: 0.0136951403692
	valid_h0_mean_x.mean_u: 0.0136951403692
INFO:pylearn2.monitor:	valid_h0_mean_x.min_u: 0.0048718447797
	valid_h0_mean_x.min_u: 0.0048718447797
INFO:pylearn2.monitor:	valid_h0_min_x.max_u: 0.0
	valid_h0_min_x.max_u: 0.0
INFO:pylearn2.monitor:	valid_h0_min_x.mean_u: -0.00278746383265
	valid_h0_min_x.mean_u: -0.00278746383265
INFO:pylearn2.monitor:	valid_h0_min_x.min_u: -0.0144370496273
	valid_h0_min_x.min_u: -0.0144370496273
INFO:pylearn2.monitor:	valid_h0_range_x.max_u: 0.0655676200986
	valid_h0_range_x.max_u: 0.0655676200986
INFO:pylearn2.monitor:	valid_h0_range_x.mean_u: 0.0414853394032
	valid_h0_range_x.mean_u: 0.0414853394032
INFO:pylearn2.monitor:	valid_h0_range_x.min_u: 0.0268564112484
	valid_h0_range_x.min_u: 0.0268564112484
INFO:pylearn2.monitor:	valid_h1_kernel_norms_max: 0.163002386689
	valid_h1_kernel_norms_max: 0.163002386689
INFO:pylearn2.monitor:	valid_h1_kernel_norms_mean: 0.160210162401
	valid_h1_kernel_norms_mean: 0.160210162401
INFO:pylearn2.monitor:	valid_h1_kernel_norms_min: 0.157817691565
	valid_h1_kernel_norms_min: 0.157817691565
INFO:pylearn2.monitor:	valid_h1_max_x.max_u: 0.0137262847275
	valid_h1_max_x.max_u: 0.0137262847275
INFO:pylearn2.monitor:	valid_h1_max_x.mean_u: 0.0059714531526
	valid_h1_max_x.mean_u: 0.0059714531526
INFO:pylearn2.monitor:	valid_h1_max_x.min_u: 0.000854207261
	valid_h1_max_x.min_u: 0.000854207261
INFO:pylearn2.monitor:	valid_h1_mean_x.max_u: 0.0092361625284
	valid_h1_mean_x.max_u: 0.0092361625284
INFO:pylearn2.monitor:	valid_h1_mean_x.mean_u: 0.00299484352581
	valid_h1_mean_x.mean_u: 0.00299484352581
INFO:pylearn2.monitor:	valid_h1_mean_x.min_u: -0.0014694359852
	valid_h1_mean_x.min_u: -0.0014694359852
INFO:pylearn2.monitor:	valid_h1_min_x.max_u: 0.00346925156191
	valid_h1_min_x.max_u: 0.00346925156191
INFO:pylearn2.monitor:	valid_h1_min_x.mean_u: -8.85072877281e-05
	valid_h1_min_x.mean_u: -8.85072877281e-05
INFO:pylearn2.monitor:	valid_h1_min_x.min_u: -0.00494840927422
	valid_h1_min_x.min_u: -0.00494840927422
INFO:pylearn2.monitor:	valid_h1_range_x.max_u: 0.0103944316506
	valid_h1_range_x.max_u: 0.0103944316506
INFO:pylearn2.monitor:	valid_h1_range_x.mean_u: 0.00605996139348
	valid_h1_range_x.mean_u: 0.00605996139348
INFO:pylearn2.monitor:	valid_h1_range_x.min_u: 0.00391950877383
	valid_h1_range_x.min_u: 0.00391950877383
INFO:pylearn2.monitor:	valid_h2_kernel_norms_max: 0.102913282812
	valid_h2_kernel_norms_max: 0.102913282812
INFO:pylearn2.monitor:	valid_h2_kernel_norms_mean: 0.0999668315053
	valid_h2_kernel_norms_mean: 0.0999668315053
INFO:pylearn2.monitor:	valid_h2_kernel_norms_min: 0.0971000865102
	valid_h2_kernel_norms_min: 0.0971000865102
INFO:pylearn2.monitor:	valid_h2_max_x.max_u: 0.00120490603149
	valid_h2_max_x.max_u: 0.00120490603149
INFO:pylearn2.monitor:	valid_h2_max_x.mean_u: 0.000702381425072
	valid_h2_max_x.mean_u: 0.000702381425072
INFO:pylearn2.monitor:	valid_h2_max_x.min_u: 0.000362753897207
	valid_h2_max_x.min_u: 0.000362753897207
INFO:pylearn2.monitor:	valid_h2_mean_x.max_u: 0.000555296079256
	valid_h2_mean_x.max_u: 0.000555296079256
INFO:pylearn2.monitor:	valid_h2_mean_x.mean_u: 0.000346901302692
	valid_h2_mean_x.mean_u: 0.000346901302692
INFO:pylearn2.monitor:	valid_h2_mean_x.min_u: 0.000127425795654
	valid_h2_mean_x.min_u: 0.000127425795654
INFO:pylearn2.monitor:	valid_h2_min_x.max_u: 0.000218161396333
	valid_h2_min_x.max_u: 0.000218161396333
INFO:pylearn2.monitor:	valid_h2_min_x.mean_u: 7.93216240709e-05
	valid_h2_min_x.mean_u: 7.93216240709e-05
INFO:pylearn2.monitor:	valid_h2_min_x.min_u: -0.00011806274415
	valid_h2_min_x.min_u: -0.00011806274415
INFO:pylearn2.monitor:	valid_h2_range_x.max_u: 0.00101337768137
	valid_h2_range_x.max_u: 0.00101337768137
INFO:pylearn2.monitor:	valid_h2_range_x.mean_u: 0.000623059808277
	valid_h2_range_x.mean_u: 0.000623059808277
INFO:pylearn2.monitor:	valid_h2_range_x.min_u: 0.000368585460819
	valid_h2_range_x.min_u: 0.000368585460819
INFO:pylearn2.monitor:	valid_objective: 2.30258369446
	valid_objective: 2.30258369446
INFO:pylearn2.monitor:	valid_y_col_norms_max: 0.0445158295333
	valid_y_col_norms_max: 0.0445158295333
INFO:pylearn2.monitor:	valid_y_col_norms_mean: 0.042573351413
	valid_y_col_norms_mean: 0.042573351413
INFO:pylearn2.monitor:	valid_y_col_norms_min: 0.0407793410122
	valid_y_col_norms_min: 0.0407793410122
INFO:pylearn2.monitor:	valid_y_max_max_class: 0.10000345856
	valid_y_max_max_class: 0.10000345856
INFO:pylearn2.monitor:	valid_y_mean_max_class: 0.100002683699
	valid_y_mean_max_class: 0.100002683699
INFO:pylearn2.monitor:	valid_y_min_max_class: 0.100001864135
	valid_y_min_max_class: 0.100001864135
INFO:pylearn2.monitor:	valid_y_misclass: 0.89683508873
	valid_y_misclass: 0.89683508873
INFO:pylearn2.monitor:	valid_y_nll: 2.30258369446
	valid_y_nll: 2.30258369446
INFO:pylearn2.monitor:	valid_y_row_norms_max: 0.0124877998605
	valid_y_row_norms_max: 0.0124877998605
INFO:pylearn2.monitor:	valid_y_row_norms_mean: 0.00906660128385
	valid_y_row_norms_mean: 0.00906660128385
INFO:pylearn2.monitor:	valid_y_row_norms_min: 0.00559448031709
	valid_y_row_norms_min: 0.00559448031709
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.262466 seconds
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.262466 seconds
INFO:pylearn2.train:Time this epoch: 26.324243 seconds
Time this epoch: 26.324243 seconds
INFO:pylearn2.monitor:Monitoring step:
Monitoring step:
INFO:pylearn2.monitor:	Epochs seen: 1
	Epochs seen: 1
INFO:pylearn2.monitor:	Batches seen: 390
	Batches seen: 390
INFO:pylearn2.monitor:	Examples seen: 49920
	Examples seen: 49920
INFO:pylearn2.monitor:	learning_rate: 0.0492261126637
	learning_rate: 0.0492261126637
INFO:pylearn2.monitor:	momentum: 0.500000536442
	momentum: 0.500000536442
INFO:pylearn2.monitor:	total_seconds_last_epoch: 0.0
	total_seconds_last_epoch: 0.0
INFO:pylearn2.monitor:	training_seconds_this_epoch: 26.3242301941
	training_seconds_this_epoch: 26.3242301941
INFO:pylearn2.monitor:	valid_h0_kernel_norms_max: 0.0256434287876
	valid_h0_kernel_norms_max: 0.0256434287876
INFO:pylearn2.monitor:	valid_h0_kernel_norms_mean: 0.0230193138123
	valid_h0_kernel_norms_mean: 0.0230193138123
INFO:pylearn2.monitor:	valid_h0_kernel_norms_min: 0.0194741655141
	valid_h0_kernel_norms_min: 0.0194741655141
INFO:pylearn2.monitor:	valid_h0_max_x.max_u: 0.0709188953042
	valid_h0_max_x.max_u: 0.0709188953042
INFO:pylearn2.monitor:	valid_h0_max_x.mean_u: 0.0410535447299
	valid_h0_max_x.mean_u: 0.0410535447299
INFO:pylearn2.monitor:	valid_h0_max_x.min_u: 0.0223912764341
	valid_h0_max_x.min_u: 0.0223912764341
INFO:pylearn2.monitor:	valid_h0_mean_x.max_u: 0.0274255033582
	valid_h0_mean_x.max_u: 0.0274255033582
INFO:pylearn2.monitor:	valid_h0_mean_x.mean_u: 0.0145971123129
	valid_h0_mean_x.mean_u: 0.0145971123129
INFO:pylearn2.monitor:	valid_h0_mean_x.min_u: 0.00533722015098
	valid_h0_mean_x.min_u: 0.00533722015098
INFO:pylearn2.monitor:	valid_h0_min_x.max_u: 6.3795062033e-07
	valid_h0_min_x.max_u: 6.3795062033e-07
INFO:pylearn2.monitor:	valid_h0_min_x.mean_u: -0.00241122534499
	valid_h0_min_x.mean_u: -0.00241122534499
INFO:pylearn2.monitor:	valid_h0_min_x.min_u: -0.0138033349067
	valid_h0_min_x.min_u: -0.0138033349067
INFO:pylearn2.monitor:	valid_h0_range_x.max_u: 0.0711643621325
	valid_h0_range_x.max_u: 0.0711643621325
INFO:pylearn2.monitor:	valid_h0_range_x.mean_u: 0.0434647910297
	valid_h0_range_x.mean_u: 0.0434647910297
INFO:pylearn2.monitor:	valid_h0_range_x.min_u: 0.0276648942381
	valid_h0_range_x.min_u: 0.0276648942381
INFO:pylearn2.monitor:	valid_h1_kernel_norms_max: 0.162974864244
	valid_h1_kernel_norms_max: 0.162974864244
INFO:pylearn2.monitor:	valid_h1_kernel_norms_mean: 0.160180360079
	valid_h1_kernel_norms_mean: 0.160180360079
INFO:pylearn2.monitor:	valid_h1_kernel_norms_min: 0.157781660557
	valid_h1_kernel_norms_min: 0.157781660557
INFO:pylearn2.monitor:	valid_h1_max_x.max_u: 0.0163575410843
	valid_h1_max_x.max_u: 0.0163575410843
INFO:pylearn2.monitor:	valid_h1_max_x.mean_u: 0.00687304697931
	valid_h1_max_x.mean_u: 0.00687304697931
INFO:pylearn2.monitor:	valid_h1_max_x.min_u: 0.000786889751907
	valid_h1_max_x.min_u: 0.000786889751907
INFO:pylearn2.monitor:	valid_h1_mean_x.max_u: 0.0108565771952
	valid_h1_mean_x.max_u: 0.0108565771952
INFO:pylearn2.monitor:	valid_h1_mean_x.mean_u: 0.00350710749626
	valid_h1_mean_x.mean_u: 0.00350710749626
INFO:pylearn2.monitor:	valid_h1_mean_x.min_u: -0.00171061477158
	valid_h1_mean_x.min_u: -0.00171061477158
INFO:pylearn2.monitor:	valid_h1_min_x.max_u: 0.00428505055606
	valid_h1_min_x.max_u: 0.00428505055606
INFO:pylearn2.monitor:	valid_h1_min_x.mean_u: 5.85763591516e-05
	valid_h1_min_x.mean_u: 5.85763591516e-05
INFO:pylearn2.monitor:	valid_h1_min_x.min_u: -0.00548096140847
	valid_h1_min_x.min_u: -0.00548096140847
INFO:pylearn2.monitor:	valid_h1_range_x.max_u: 0.0121795609593
	valid_h1_range_x.max_u: 0.0121795609593
INFO:pylearn2.monitor:	valid_h1_range_x.mean_u: 0.00681447191164
	valid_h1_range_x.mean_u: 0.00681447191164
INFO:pylearn2.monitor:	valid_h1_range_x.min_u: 0.0043019913137
	valid_h1_range_x.min_u: 0.0043019913137
INFO:pylearn2.monitor:	valid_h2_kernel_norms_max: 0.102895401418
	valid_h2_kernel_norms_max: 0.102895401418
INFO:pylearn2.monitor:	valid_h2_kernel_norms_mean: 0.0999478697777
	valid_h2_kernel_norms_mean: 0.0999478697777
INFO:pylearn2.monitor:	valid_h2_kernel_norms_min: 0.0972176119685
	valid_h2_kernel_norms_min: 0.0972176119685
INFO:pylearn2.monitor:	valid_h2_max_x.max_u: 0.00252992729656
	valid_h2_max_x.max_u: 0.00252992729656
INFO:pylearn2.monitor:	valid_h2_max_x.mean_u: 0.00189519173
	valid_h2_max_x.mean_u: 0.00189519173
INFO:pylearn2.monitor:	valid_h2_max_x.min_u: 0.00108730013017
	valid_h2_max_x.min_u: 0.00108730013017
INFO:pylearn2.monitor:	valid_h2_mean_x.max_u: 0.00119236833416
	valid_h2_mean_x.max_u: 0.00119236833416
INFO:pylearn2.monitor:	valid_h2_mean_x.mean_u: 0.000875162775628
	valid_h2_mean_x.mean_u: 0.000875162775628
INFO:pylearn2.monitor:	valid_h2_mean_x.min_u: 0.000523012480699
	valid_h2_mean_x.min_u: 0.000523012480699
INFO:pylearn2.monitor:	valid_h2_min_x.max_u: 0.00041963061085
	valid_h2_min_x.max_u: 0.00041963061085
INFO:pylearn2.monitor:	valid_h2_min_x.mean_u: 0.000191248822375
	valid_h2_min_x.mean_u: 0.000191248822375
INFO:pylearn2.monitor:	valid_h2_min_x.min_u: -8.59818610479e-05
	valid_h2_min_x.min_u: -8.59818610479e-05
INFO:pylearn2.monitor:	valid_h2_range_x.max_u: 0.00233255652711
	valid_h2_range_x.max_u: 0.00233255652711
INFO:pylearn2.monitor:	valid_h2_range_x.mean_u: 0.0017039431259
	valid_h2_range_x.mean_u: 0.0017039431259
INFO:pylearn2.monitor:	valid_h2_range_x.min_u: 0.000923208019231
	valid_h2_range_x.min_u: 0.000923208019231
INFO:pylearn2.monitor:	valid_objective: 2.30186033249
	valid_objective: 2.30186033249
INFO:pylearn2.monitor:	valid_y_col_norms_max: 0.0450761653483
	valid_y_col_norms_max: 0.0450761653483
INFO:pylearn2.monitor:	valid_y_col_norms_mean: 0.0430803783238
	valid_y_col_norms_mean: 0.0430803783238
INFO:pylearn2.monitor:	valid_y_col_norms_min: 0.0406586714089
	valid_y_col_norms_min: 0.0406586714089
INFO:pylearn2.monitor:	valid_y_max_max_class: 0.11318731308
	valid_y_max_max_class: 0.11318731308
INFO:pylearn2.monitor:	valid_y_mean_max_class: 0.113183416426
	valid_y_mean_max_class: 0.113183416426
INFO:pylearn2.monitor:	valid_y_min_max_class: 0.113179937005
	valid_y_min_max_class: 0.113179937005
INFO:pylearn2.monitor:	valid_y_misclass: 0.893629968166
	valid_y_misclass: 0.893629968166
INFO:pylearn2.monitor:	valid_y_nll: 2.30186486244
	valid_y_nll: 2.30186486244
INFO:pylearn2.monitor:	valid_y_row_norms_max: 0.0128184501082
	valid_y_row_norms_max: 0.0128184501082
INFO:pylearn2.monitor:	valid_y_row_norms_mean: 0.0091739911586
	valid_y_row_norms_mean: 0.0091739911586
INFO:pylearn2.monitor:	valid_y_row_norms_min: 0.00532714044675
	valid_y_row_norms_min: 0.00532714044675
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.251855 seconds
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.251855 seconds
INFO:pylearn2.train:Time this epoch: 36.090607 seconds
Time this epoch: 36.090607 seconds
INFO:pylearn2.monitor:Monitoring step:
Monitoring step:
INFO:pylearn2.monitor:	Epochs seen: 2
	Epochs seen: 2
INFO:pylearn2.monitor:	Batches seen: 780
	Batches seen: 780
INFO:pylearn2.monitor:	Examples seen: 99840
	Examples seen: 99840
INFO:pylearn2.monitor:	learning_rate: 0.0484641008079
	learning_rate: 0.0484641008079
INFO:pylearn2.monitor:	momentum: 0.500803172588
	momentum: 0.500803172588
INFO:pylearn2.monitor:	total_seconds_last_epoch: 32.1846694946
	total_seconds_last_epoch: 32.1846694946
INFO:pylearn2.monitor:	training_seconds_this_epoch: 36.0905952454
	training_seconds_this_epoch: 36.0905952454
INFO:pylearn2.monitor:	valid_h0_kernel_norms_max: 0.0277681369334
	valid_h0_kernel_norms_max: 0.0277681369334
INFO:pylearn2.monitor:	valid_h0_kernel_norms_mean: 0.023361897096
	valid_h0_kernel_norms_mean: 0.023361897096
INFO:pylearn2.monitor:	valid_h0_kernel_norms_min: 0.0194346066564
	valid_h0_kernel_norms_min: 0.0194346066564
INFO:pylearn2.monitor:	valid_h0_max_x.max_u: 0.0965623781085
	valid_h0_max_x.max_u: 0.0965623781085
INFO:pylearn2.monitor:	valid_h0_max_x.mean_u: 0.0513858608902
	valid_h0_max_x.mean_u: 0.0513858608902
INFO:pylearn2.monitor:	valid_h0_max_x.min_u: 0.0233043786138
	valid_h0_max_x.min_u: 0.0233043786138
INFO:pylearn2.monitor:	valid_h0_mean_x.max_u: 0.0360036641359
	valid_h0_mean_x.max_u: 0.0360036641359
INFO:pylearn2.monitor:	valid_h0_mean_x.mean_u: 0.0185865666717
	valid_h0_mean_x.mean_u: 0.0185865666717
INFO:pylearn2.monitor:	valid_h0_mean_x.min_u: 0.0069374977611
	valid_h0_mean_x.min_u: 0.0069374977611
INFO:pylearn2.monitor:	valid_h0_min_x.max_u: 2.43000840783e-06
	valid_h0_min_x.max_u: 2.43000840783e-06
INFO:pylearn2.monitor:	valid_h0_min_x.mean_u: -0.00151391839609
	valid_h0_min_x.mean_u: -0.00151391839609
INFO:pylearn2.monitor:	valid_h0_min_x.min_u: -0.0121674267575
	valid_h0_min_x.min_u: -0.0121674267575
INFO:pylearn2.monitor:	valid_h0_range_x.max_u: 0.0965964049101
	valid_h0_range_x.max_u: 0.0965964049101
INFO:pylearn2.monitor:	valid_h0_range_x.mean_u: 0.0528997778893
	valid_h0_range_x.mean_u: 0.0528997778893
INFO:pylearn2.monitor:	valid_h0_range_x.min_u: 0.0267550610006
	valid_h0_range_x.min_u: 0.0267550610006
INFO:pylearn2.monitor:	valid_h1_kernel_norms_max: 0.162957891822
	valid_h1_kernel_norms_max: 0.162957891822
INFO:pylearn2.monitor:	valid_h1_kernel_norms_mean: 0.160195469856
	valid_h1_kernel_norms_mean: 0.160195469856
INFO:pylearn2.monitor:	valid_h1_kernel_norms_min: 0.15775232017
	valid_h1_kernel_norms_min: 0.15775232017
INFO:pylearn2.monitor:	valid_h1_max_x.max_u: 0.0296910163015
	valid_h1_max_x.max_u: 0.0296910163015
INFO:pylearn2.monitor:	valid_h1_max_x.mean_u: 0.0120161408558
	valid_h1_max_x.mean_u: 0.0120161408558
INFO:pylearn2.monitor:	valid_h1_max_x.min_u: 0.000827515381388
	valid_h1_max_x.min_u: 0.000827515381388
INFO:pylearn2.monitor:	valid_h1_mean_x.max_u: 0.0187264680862
	valid_h1_mean_x.max_u: 0.0187264680862
INFO:pylearn2.monitor:	valid_h1_mean_x.mean_u: 0.00640774704516
	valid_h1_mean_x.mean_u: 0.00640774704516
INFO:pylearn2.monitor:	valid_h1_mean_x.min_u: -0.00252707581967
	valid_h1_mean_x.min_u: -0.00252707581967
INFO:pylearn2.monitor:	valid_h1_min_x.max_u: 0.00778808165342
	valid_h1_min_x.max_u: 0.00778808165342
INFO:pylearn2.monitor:	valid_h1_min_x.mean_u: 0.000887881265953
	valid_h1_min_x.mean_u: 0.000887881265953
INFO:pylearn2.monitor:	valid_h1_min_x.min_u: -0.00765997217968
	valid_h1_min_x.min_u: -0.00765997217968
INFO:pylearn2.monitor:	valid_h1_range_x.max_u: 0.0219162590802
	valid_h1_range_x.max_u: 0.0219162590802
INFO:pylearn2.monitor:	valid_h1_range_x.mean_u: 0.0111282551661
	valid_h1_range_x.mean_u: 0.0111282551661
INFO:pylearn2.monitor:	valid_h1_range_x.min_u: 0.00589572684839
	valid_h1_range_x.min_u: 0.00589572684839
INFO:pylearn2.monitor:	valid_h2_kernel_norms_max: 0.102884635329
	valid_h2_kernel_norms_max: 0.102884635329
INFO:pylearn2.monitor:	valid_h2_kernel_norms_mean: 0.100001916289
	valid_h2_kernel_norms_mean: 0.100001916289
INFO:pylearn2.monitor:	valid_h2_kernel_norms_min: 0.097670905292
	valid_h2_kernel_norms_min: 0.097670905292
INFO:pylearn2.monitor:	valid_h2_max_x.max_u: 0.00410067476332
	valid_h2_max_x.max_u: 0.00410067476332
INFO:pylearn2.monitor:	valid_h2_max_x.mean_u: 0.00295336940326
	valid_h2_max_x.mean_u: 0.00295336940326
INFO:pylearn2.monitor:	valid_h2_max_x.min_u: 0.0022234453354
	valid_h2_max_x.min_u: 0.0022234453354
INFO:pylearn2.monitor:	valid_h2_mean_x.max_u: 0.00211778911762
	valid_h2_mean_x.max_u: 0.00211778911762
INFO:pylearn2.monitor:	valid_h2_mean_x.mean_u: 0.00152561930008
	valid_h2_mean_x.mean_u: 0.00152561930008
INFO:pylearn2.monitor:	valid_h2_mean_x.min_u: 0.00115845981054
	valid_h2_mean_x.min_u: 0.00115845981054
INFO:pylearn2.monitor:	valid_h2_min_x.max_u: 0.000771897204686
	valid_h2_min_x.max_u: 0.000771897204686
INFO:pylearn2.monitor:	valid_h2_min_x.mean_u: 0.000396407820517
	valid_h2_min_x.mean_u: 0.000396407820517
INFO:pylearn2.monitor:	valid_h2_min_x.min_u: 0.000125015954836
	valid_h2_min_x.min_u: 0.000125015954836
INFO:pylearn2.monitor:	valid_h2_range_x.max_u: 0.00341824092902
	valid_h2_range_x.max_u: 0.00341824092902
INFO:pylearn2.monitor:	valid_h2_range_x.mean_u: 0.00255696172826
	valid_h2_range_x.mean_u: 0.00255696172826
INFO:pylearn2.monitor:	valid_h2_range_x.min_u: 0.0018752705073
	valid_h2_range_x.min_u: 0.0018752705073
INFO:pylearn2.monitor:	valid_objective: 2.30190706253
	valid_objective: 2.30190706253
INFO:pylearn2.monitor:	valid_y_col_norms_max: 0.0559279695153
	valid_y_col_norms_max: 0.0559279695153
INFO:pylearn2.monitor:	valid_y_col_norms_mean: 0.0449611544609
	valid_y_col_norms_mean: 0.0449611544609
INFO:pylearn2.monitor:	valid_y_col_norms_min: 0.0407343022525
	valid_y_col_norms_min: 0.0407343022525
INFO:pylearn2.monitor:	valid_y_max_max_class: 0.11370574683
	valid_y_max_max_class: 0.11370574683
INFO:pylearn2.monitor:	valid_y_mean_max_class: 0.113674215972
	valid_y_mean_max_class: 0.113674215972
INFO:pylearn2.monitor:	valid_y_min_max_class: 0.113645642996
	valid_y_min_max_class: 0.113645642996
INFO:pylearn2.monitor:	valid_y_misclass: 0.893629968166
	valid_y_misclass: 0.893629968166
INFO:pylearn2.monitor:	valid_y_nll: 2.30192613602
	valid_y_nll: 2.30192613602
INFO:pylearn2.monitor:	valid_y_row_norms_max: 0.0145381530747
	valid_y_row_norms_max: 0.0145381530747
INFO:pylearn2.monitor:	valid_y_row_norms_mean: 0.00958941318095
	valid_y_row_norms_mean: 0.00958941318095
INFO:pylearn2.monitor:	valid_y_row_norms_min: 0.0051019503735
	valid_y_row_norms_min: 0.0051019503735
INFO:pylearn2.train:Time this epoch: 36.149635 seconds
Time this epoch: 36.149635 seconds
INFO:pylearn2.monitor:Monitoring step:
Monitoring step:
INFO:pylearn2.monitor:	Epochs seen: 3
	Epochs seen: 3
INFO:pylearn2.monitor:	Batches seen: 1170
	Batches seen: 1170
INFO:pylearn2.monitor:	Examples seen: 149760
	Examples seen: 149760
INFO:pylearn2.monitor:	learning_rate: 0.047713983804
	learning_rate: 0.047713983804
INFO:pylearn2.monitor:	momentum: 0.501606822014
	momentum: 0.501606822014
INFO:pylearn2.monitor:	total_seconds_last_epoch: 41.6957740784
	total_seconds_last_epoch: 41.6957740784
INFO:pylearn2.monitor:	training_seconds_this_epoch: 36.1496353149
	training_seconds_this_epoch: 36.1496353149
INFO:pylearn2.monitor:	valid_h0_kernel_norms_max: 0.0771777778864
	valid_h0_kernel_norms_max: 0.0771777778864
INFO:pylearn2.monitor:	valid_h0_kernel_norms_mean: 0.0317367836833
	valid_h0_kernel_norms_mean: 0.0317367836833
INFO:pylearn2.monitor:	valid_h0_kernel_norms_min: 0.0193819180131
	valid_h0_kernel_norms_min: 0.0193819180131
INFO:pylearn2.monitor:	valid_h0_max_x.max_u: 0.466251194477
	valid_h0_max_x.max_u: 0.466251194477
INFO:pylearn2.monitor:	valid_h0_max_x.mean_u: 0.193814352155
	valid_h0_max_x.mean_u: 0.193814352155
INFO:pylearn2.monitor:	valid_h0_max_x.min_u: 0.0304251872003
	valid_h0_max_x.min_u: 0.0304251872003
INFO:pylearn2.monitor:	valid_h0_mean_x.max_u: 0.171378090978
	valid_h0_mean_x.max_u: 0.171378090978
INFO:pylearn2.monitor:	valid_h0_mean_x.mean_u: 0.0722309425473
	valid_h0_mean_x.mean_u: 0.0722309425473
INFO:pylearn2.monitor:	valid_h0_mean_x.min_u: 0.0120129259303
	valid_h0_mean_x.min_u: 0.0120129259303
INFO:pylearn2.monitor:	valid_h0_min_x.max_u: 6.84473945967e-07
	valid_h0_min_x.max_u: 6.84473945967e-07
INFO:pylearn2.monitor:	valid_h0_min_x.mean_u: -0.000213643332245
	valid_h0_min_x.mean_u: -0.000213643332245
INFO:pylearn2.monitor:	valid_h0_min_x.min_u: -0.00658553326502
	valid_h0_min_x.min_u: -0.00658553326502
INFO:pylearn2.monitor:	valid_h0_range_x.max_u: 0.466253131628
	valid_h0_range_x.max_u: 0.466253131628
INFO:pylearn2.monitor:	valid_h0_range_x.mean_u: 0.194028005004
	valid_h0_range_x.mean_u: 0.194028005004
INFO:pylearn2.monitor:	valid_h0_range_x.min_u: 0.0304278042167
	valid_h0_range_x.min_u: 0.0304278042167
INFO:pylearn2.monitor:	valid_h1_kernel_norms_max: 0.176333740354
	valid_h1_kernel_norms_max: 0.176333740354
INFO:pylearn2.monitor:	valid_h1_kernel_norms_mean: 0.162074357271
	valid_h1_kernel_norms_mean: 0.162074357271
INFO:pylearn2.monitor:	valid_h1_kernel_norms_min: 0.157940521836
	valid_h1_kernel_norms_min: 0.157940521836
INFO:pylearn2.monitor:	valid_h1_max_x.max_u: 0.564908146858
	valid_h1_max_x.max_u: 0.564908146858
INFO:pylearn2.monitor:	valid_h1_max_x.mean_u: 0.230425924063
	valid_h1_max_x.mean_u: 0.230425924063
INFO:pylearn2.monitor:	valid_h1_max_x.min_u: 0.000174194545252
	valid_h1_max_x.min_u: 0.000174194545252
INFO:pylearn2.monitor:	valid_h1_mean_x.max_u: 0.298074603081
	valid_h1_mean_x.max_u: 0.298074603081
INFO:pylearn2.monitor:	valid_h1_mean_x.mean_u: 0.121077299118
	valid_h1_mean_x.mean_u: 0.121077299118
INFO:pylearn2.monitor:	valid_h1_mean_x.min_u: -0.0194995123893
	valid_h1_mean_x.min_u: -0.0194995123893
INFO:pylearn2.monitor:	valid_h1_min_x.max_u: 0.0953140854836
	valid_h1_min_x.max_u: 0.0953140854836
INFO:pylearn2.monitor:	valid_h1_min_x.mean_u: 0.0348803289235
	valid_h1_min_x.mean_u: 0.0348803289235
INFO:pylearn2.monitor:	valid_h1_min_x.min_u: -0.0585624650121
	valid_h1_min_x.min_u: -0.0585624650121
INFO:pylearn2.monitor:	valid_h1_range_x.max_u: 0.469594061375
	valid_h1_range_x.max_u: 0.469594061375
INFO:pylearn2.monitor:	valid_h1_range_x.mean_u: 0.195545583963
	valid_h1_range_x.mean_u: 0.195545583963
INFO:pylearn2.monitor:	valid_h1_range_x.min_u: 0.0270121470094
	valid_h1_range_x.min_u: 0.0270121470094
INFO:pylearn2.monitor:	valid_h2_kernel_norms_max: 0.133079320192
	valid_h2_kernel_norms_max: 0.133079320192
INFO:pylearn2.monitor:	valid_h2_kernel_norms_mean: 0.102876827121
	valid_h2_kernel_norms_mean: 0.102876827121
INFO:pylearn2.monitor:	valid_h2_kernel_norms_min: 0.0979020446539
	valid_h2_kernel_norms_min: 0.0979020446539
INFO:pylearn2.monitor:	valid_h2_max_x.max_u: 0.543279349804
	valid_h2_max_x.max_u: 0.543279349804
INFO:pylearn2.monitor:	valid_h2_max_x.mean_u: 0.263537824154
	valid_h2_max_x.mean_u: 0.263537824154
INFO:pylearn2.monitor:	valid_h2_max_x.min_u: 0.0247215051204
	valid_h2_max_x.min_u: 0.0247215051204
INFO:pylearn2.monitor:	valid_h2_mean_x.max_u: 0.211639106274
	valid_h2_mean_x.max_u: 0.211639106274
INFO:pylearn2.monitor:	valid_h2_mean_x.mean_u: 0.0978276729584
	valid_h2_mean_x.mean_u: 0.0978276729584
INFO:pylearn2.monitor:	valid_h2_mean_x.min_u: 0.00580511195585
	valid_h2_mean_x.min_u: 0.00580511195585
INFO:pylearn2.monitor:	valid_h2_min_x.max_u: 0.0538118109107
	valid_h2_min_x.max_u: 0.0538118109107
INFO:pylearn2.monitor:	valid_h2_min_x.mean_u: 0.019486406818
	valid_h2_min_x.mean_u: 0.019486406818
INFO:pylearn2.monitor:	valid_h2_min_x.min_u: -0.00249058939517
	valid_h2_min_x.min_u: -0.00249058939517
INFO:pylearn2.monitor:	valid_h2_range_x.max_u: 0.489467382431
	valid_h2_range_x.max_u: 0.489467382431
INFO:pylearn2.monitor:	valid_h2_range_x.mean_u: 0.244051471353
	valid_h2_range_x.mean_u: 0.244051471353
INFO:pylearn2.monitor:	valid_h2_range_x.min_u: 0.0237142611295
	valid_h2_range_x.min_u: 0.0237142611295
INFO:pylearn2.monitor:	valid_objective: 2.28461241722
	valid_objective: 2.28461241722
INFO:pylearn2.monitor:	valid_y_col_norms_max: 0.206165865064
	valid_y_col_norms_max: 0.206165865064
INFO:pylearn2.monitor:	valid_y_col_norms_mean: 0.0880369246006
	valid_y_col_norms_mean: 0.0880369246006
INFO:pylearn2.monitor:	valid_y_col_norms_min: 0.0502431206405
	valid_y_col_norms_min: 0.0502431206405
INFO:pylearn2.monitor:	valid_y_max_max_class: 0.121731005609
	valid_y_max_max_class: 0.121731005609
INFO:pylearn2.monitor:	valid_y_mean_max_class: 0.112214207649
	valid_y_mean_max_class: 0.112214207649
INFO:pylearn2.monitor:	valid_y_min_max_class: 0.106254786253
	valid_y_min_max_class: 0.106254786253
INFO:pylearn2.monitor:	valid_y_misclass: 0.83834117651
	valid_y_misclass: 0.83834117651
INFO:pylearn2.monitor:	valid_y_nll: 2.28146314621
	valid_y_nll: 2.28146314621
INFO:pylearn2.monitor:	valid_y_row_norms_max: 0.053204510361
	valid_y_row_norms_max: 0.053204510361
INFO:pylearn2.monitor:	valid_y_row_norms_mean: 0.0190178379416
	valid_y_row_norms_mean: 0.0190178379416
INFO:pylearn2.monitor:	valid_y_row_norms_min: 0.00622199522331
	valid_y_row_norms_min: 0.00622199522331
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.252964 seconds
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.252964 seconds
INFO:pylearn2.train:Time this epoch: 36.114048 seconds
Time this epoch: 36.114048 seconds
INFO:pylearn2.monitor:Monitoring step:
Monitoring step:
INFO:pylearn2.monitor:	Epochs seen: 4
	Epochs seen: 4
INFO:pylearn2.monitor:	Batches seen: 1560
	Batches seen: 1560
INFO:pylearn2.monitor:	Examples seen: 199680
	Examples seen: 199680
INFO:pylearn2.monitor:	learning_rate: 0.0469754226506
	learning_rate: 0.0469754226506
INFO:pylearn2.monitor:	momentum: 0.50240945816
	momentum: 0.50240945816
INFO:pylearn2.monitor:	total_seconds_last_epoch: 42.0013465881
	total_seconds_last_epoch: 42.0013465881
INFO:pylearn2.monitor:	training_seconds_this_epoch: 36.1140708923
	training_seconds_this_epoch: 36.1140708923
INFO:pylearn2.monitor:	valid_h0_kernel_norms_max: 0.722327649593
	valid_h0_kernel_norms_max: 0.722327649593
INFO:pylearn2.monitor:	valid_h0_kernel_norms_mean: 0.173145368695
	valid_h0_kernel_norms_mean: 0.173145368695
INFO:pylearn2.monitor:	valid_h0_kernel_norms_min: 0.0222138036042
	valid_h0_kernel_norms_min: 0.0222138036042
INFO:pylearn2.monitor:	valid_h0_max_x.max_u: 1.44579732418
	valid_h0_max_x.max_u: 1.44579732418
INFO:pylearn2.monitor:	valid_h0_max_x.mean_u: 0.762387812138
	valid_h0_max_x.mean_u: 0.762387812138
INFO:pylearn2.monitor:	valid_h0_max_x.min_u: 0.305321782827
	valid_h0_max_x.min_u: 0.305321782827
INFO:pylearn2.monitor:	valid_h0_mean_x.max_u: 0.393265932798
	valid_h0_mean_x.max_u: 0.393265932798
INFO:pylearn2.monitor:	valid_h0_mean_x.mean_u: 0.181332632899
	valid_h0_mean_x.mean_u: 0.181332632899
INFO:pylearn2.monitor:	valid_h0_mean_x.min_u: 0.0574394278228
	valid_h0_mean_x.min_u: 0.0574394278228
INFO:pylearn2.monitor:	valid_h0_min_x.max_u: 0.00023661031446
	valid_h0_min_x.max_u: 0.00023661031446
INFO:pylearn2.monitor:	valid_h0_min_x.mean_u: -0.165435597301
	valid_h0_min_x.mean_u: -0.165435597301
INFO:pylearn2.monitor:	valid_h0_min_x.min_u: -1.59743654728
	valid_h0_min_x.min_u: -1.59743654728
INFO:pylearn2.monitor:	valid_h0_range_x.max_u: 3.0432343483
	valid_h0_range_x.max_u: 3.0432343483
INFO:pylearn2.monitor:	valid_h0_range_x.mean_u: 0.927823424339
	valid_h0_range_x.mean_u: 0.927823424339
INFO:pylearn2.monitor:	valid_h0_range_x.min_u: 0.420111089945
	valid_h0_range_x.min_u: 0.420111089945
INFO:pylearn2.monitor:	valid_h1_kernel_norms_max: 0.625050485134
	valid_h1_kernel_norms_max: 0.625050485134
INFO:pylearn2.monitor:	valid_h1_kernel_norms_mean: 0.296093463898
	valid_h1_kernel_norms_mean: 0.296093463898
INFO:pylearn2.monitor:	valid_h1_kernel_norms_min: 0.158789798617
	valid_h1_kernel_norms_min: 0.158789798617
INFO:pylearn2.monitor:	valid_h1_max_x.max_u: 4.33207941055
	valid_h1_max_x.max_u: 4.33207941055
INFO:pylearn2.monitor:	valid_h1_max_x.mean_u: 2.3402633667
	valid_h1_max_x.mean_u: 2.3402633667
INFO:pylearn2.monitor:	valid_h1_max_x.min_u: 1.21104609966
	valid_h1_max_x.min_u: 1.21104609966
INFO:pylearn2.monitor:	valid_h1_mean_x.max_u: 1.21665096283
	valid_h1_mean_x.max_u: 1.21665096283
INFO:pylearn2.monitor:	valid_h1_mean_x.mean_u: 0.516009092331
	valid_h1_mean_x.mean_u: 0.516009092331
INFO:pylearn2.monitor:	valid_h1_mean_x.min_u: -0.13811828196
	valid_h1_mean_x.min_u: -0.13811828196
INFO:pylearn2.monitor:	valid_h1_min_x.max_u: 0.213648930192
	valid_h1_min_x.max_u: 0.213648930192
INFO:pylearn2.monitor:	valid_h1_min_x.mean_u: -0.530420780182
	valid_h1_min_x.mean_u: -0.530420780182
INFO:pylearn2.monitor:	valid_h1_min_x.min_u: -1.49102556705
	valid_h1_min_x.min_u: -1.49102556705
INFO:pylearn2.monitor:	valid_h1_range_x.max_u: 4.90883684158
	valid_h1_range_x.max_u: 4.90883684158
INFO:pylearn2.monitor:	valid_h1_range_x.mean_u: 2.87068343163
	valid_h1_range_x.mean_u: 2.87068343163
INFO:pylearn2.monitor:	valid_h1_range_x.min_u: 1.17628407478
	valid_h1_range_x.min_u: 1.17628407478
INFO:pylearn2.monitor:	valid_h2_kernel_norms_max: 0.640996813774
	valid_h2_kernel_norms_max: 0.640996813774
INFO:pylearn2.monitor:	valid_h2_kernel_norms_mean: 0.246636912227
	valid_h2_kernel_norms_mean: 0.246636912227
INFO:pylearn2.monitor:	valid_h2_kernel_norms_min: 0.0984345674515
	valid_h2_kernel_norms_min: 0.0984345674515
INFO:pylearn2.monitor:	valid_h2_max_x.max_u: 7.12524986267
	valid_h2_max_x.max_u: 7.12524986267
INFO:pylearn2.monitor:	valid_h2_max_x.mean_u: 4.66245031357
	valid_h2_max_x.mean_u: 4.66245031357
INFO:pylearn2.monitor:	valid_h2_max_x.min_u: 2.12647914886
	valid_h2_max_x.min_u: 2.12647914886
INFO:pylearn2.monitor:	valid_h2_mean_x.max_u: 0.715863704681
	valid_h2_mean_x.max_u: 0.715863704681
INFO:pylearn2.monitor:	valid_h2_mean_x.mean_u: 0.435067504644
	valid_h2_mean_x.mean_u: 0.435067504644
INFO:pylearn2.monitor:	valid_h2_mean_x.min_u: 0.102857254446
	valid_h2_mean_x.min_u: 0.102857254446
INFO:pylearn2.monitor:	valid_h2_min_x.max_u: -0.0666022077203
	valid_h2_min_x.max_u: -0.0666022077203
INFO:pylearn2.monitor:	valid_h2_min_x.mean_u: -1.57689130306
	valid_h2_min_x.mean_u: -1.57689130306
INFO:pylearn2.monitor:	valid_h2_min_x.min_u: -2.53723287582
	valid_h2_min_x.min_u: -2.53723287582
INFO:pylearn2.monitor:	valid_h2_range_x.max_u: 8.89019012451
	valid_h2_range_x.max_u: 8.89019012451
INFO:pylearn2.monitor:	valid_h2_range_x.mean_u: 6.23934268951
	valid_h2_range_x.mean_u: 6.23934268951
INFO:pylearn2.monitor:	valid_h2_range_x.min_u: 2.22104120255
	valid_h2_range_x.min_u: 2.22104120255
INFO:pylearn2.monitor:	valid_objective: 0.314877778292
	valid_objective: 0.314877778292
INFO:pylearn2.monitor:	valid_y_col_norms_max: 1.0531141758
	valid_y_col_norms_max: 1.0531141758
INFO:pylearn2.monitor:	valid_y_col_norms_mean: 0.894145429134
	valid_y_col_norms_mean: 0.894145429134
INFO:pylearn2.monitor:	valid_y_col_norms_min: 0.757939100266
	valid_y_col_norms_min: 0.757939100266
INFO:pylearn2.monitor:	valid_y_max_max_class: 0.999985873699
	valid_y_max_max_class: 0.999985873699
INFO:pylearn2.monitor:	valid_y_mean_max_class: 0.939149975777
	valid_y_mean_max_class: 0.939149975777
INFO:pylearn2.monitor:	valid_y_min_max_class: 0.405493080616
	valid_y_min_max_class: 0.405493080616
INFO:pylearn2.monitor:	valid_y_misclass: 0.0538862347603
	valid_y_misclass: 0.0538862347603
INFO:pylearn2.monitor:	valid_y_nll: 0.179397597909
	valid_y_nll: 0.179397597909
INFO:pylearn2.monitor:	valid_y_row_norms_max: 0.315414071083
	valid_y_row_norms_max: 0.315414071083
INFO:pylearn2.monitor:	valid_y_row_norms_mean: 0.180640086532
	valid_y_row_norms_mean: 0.180640086532
INFO:pylearn2.monitor:	valid_y_row_norms_min: 0.0242856703699
	valid_y_row_norms_min: 0.0242856703699
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.260041 seconds
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.260041 seconds
INFO:pylearn2.train:Time this epoch: 36.099575 seconds
Time this epoch: 36.099575 seconds
INFO:pylearn2.monitor:Monitoring step:
Monitoring step:
INFO:pylearn2.monitor:	Epochs seen: 5
	Epochs seen: 5
INFO:pylearn2.monitor:	Batches seen: 1950
	Batches seen: 1950
INFO:pylearn2.monitor:	Examples seen: 249600
	Examples seen: 249600
INFO:pylearn2.monitor:	learning_rate: 0.0462483204901
	learning_rate: 0.0462483204901
INFO:pylearn2.monitor:	momentum: 0.503213226795
	momentum: 0.503213226795
INFO:pylearn2.monitor:	total_seconds_last_epoch: 41.9746818542
	total_seconds_last_epoch: 41.9746818542
INFO:pylearn2.monitor:	training_seconds_this_epoch: 36.0995483398
	training_seconds_this_epoch: 36.0995483398
INFO:pylearn2.monitor:	valid_h0_kernel_norms_max: 0.79072034359
	valid_h0_kernel_norms_max: 0.79072034359
INFO:pylearn2.monitor:	valid_h0_kernel_norms_mean: 0.234426960349
	valid_h0_kernel_norms_mean: 0.234426960349
INFO:pylearn2.monitor:	valid_h0_kernel_norms_min: 0.0224606376141
	valid_h0_kernel_norms_min: 0.0224606376141
INFO:pylearn2.monitor:	valid_h0_max_x.max_u: 1.24653208256
	valid_h0_max_x.max_u: 1.24653208256
INFO:pylearn2.monitor:	valid_h0_max_x.mean_u: 0.801713585854
	valid_h0_max_x.mean_u: 0.801713585854
INFO:pylearn2.monitor:	valid_h0_max_x.min_u: 0.353657454252
	valid_h0_max_x.min_u: 0.353657454252
INFO:pylearn2.monitor:	valid_h0_mean_x.max_u: 0.289873421192
	valid_h0_mean_x.max_u: 0.289873421192
INFO:pylearn2.monitor:	valid_h0_mean_x.mean_u: 0.155703037977
	valid_h0_mean_x.mean_u: 0.155703037977
INFO:pylearn2.monitor:	valid_h0_mean_x.min_u: 0.067341580987
	valid_h0_mean_x.min_u: 0.067341580987
INFO:pylearn2.monitor:	valid_h0_min_x.max_u: 1.33834728331e-05
	valid_h0_min_x.max_u: 1.33834728331e-05
INFO:pylearn2.monitor:	valid_h0_min_x.mean_u: -0.274617999792
	valid_h0_min_x.mean_u: -0.274617999792
INFO:pylearn2.monitor:	valid_h0_min_x.min_u: -2.03115916252
	valid_h0_min_x.min_u: -2.03115916252
INFO:pylearn2.monitor:	valid_h0_range_x.max_u: 3.14129543304
	valid_h0_range_x.max_u: 3.14129543304
INFO:pylearn2.monitor:	valid_h0_range_x.mean_u: 1.07633173466
	valid_h0_range_x.mean_u: 1.07633173466
INFO:pylearn2.monitor:	valid_h0_range_x.min_u: 0.369760274887
	valid_h0_range_x.min_u: 0.369760274887
INFO:pylearn2.monitor:	valid_h1_kernel_norms_max: 0.812757611275
	valid_h1_kernel_norms_max: 0.812757611275
INFO:pylearn2.monitor:	valid_h1_kernel_norms_mean: 0.376733213663
	valid_h1_kernel_norms_mean: 0.376733213663
INFO:pylearn2.monitor:	valid_h1_kernel_norms_min: 0.160231769085
	valid_h1_kernel_norms_min: 0.160231769085
INFO:pylearn2.monitor:	valid_h1_max_x.max_u: 4.75283622742
	valid_h1_max_x.max_u: 4.75283622742
INFO:pylearn2.monitor:	valid_h1_max_x.mean_u: 2.34672021866
	valid_h1_max_x.mean_u: 2.34672021866
INFO:pylearn2.monitor:	valid_h1_max_x.min_u: 1.26844036579
	valid_h1_max_x.min_u: 1.26844036579
INFO:pylearn2.monitor:	valid_h1_mean_x.max_u: 1.19252133369
	valid_h1_mean_x.max_u: 1.19252133369
INFO:pylearn2.monitor:	valid_h1_mean_x.mean_u: 0.355703651905
	valid_h1_mean_x.mean_u: 0.355703651905
INFO:pylearn2.monitor:	valid_h1_mean_x.min_u: -0.067130215466
	valid_h1_mean_x.min_u: -0.067130215466
INFO:pylearn2.monitor:	valid_h1_min_x.max_u: 0.129600062966
	valid_h1_min_x.max_u: 0.129600062966
INFO:pylearn2.monitor:	valid_h1_min_x.mean_u: -0.653524935246
	valid_h1_min_x.mean_u: -0.653524935246
INFO:pylearn2.monitor:	valid_h1_min_x.min_u: -1.55448579788
	valid_h1_min_x.min_u: -1.55448579788
INFO:pylearn2.monitor:	valid_h1_range_x.max_u: 5.89756536484
	valid_h1_range_x.max_u: 5.89756536484
INFO:pylearn2.monitor:	valid_h1_range_x.mean_u: 3.00024557114
	valid_h1_range_x.mean_u: 3.00024557114
INFO:pylearn2.monitor:	valid_h1_range_x.min_u: 1.41475522518
	valid_h1_range_x.min_u: 1.41475522518
INFO:pylearn2.monitor:	valid_h2_kernel_norms_max: 0.771396875381
	valid_h2_kernel_norms_max: 0.771396875381
INFO:pylearn2.monitor:	valid_h2_kernel_norms_mean: 0.313487440348
	valid_h2_kernel_norms_mean: 0.313487440348
INFO:pylearn2.monitor:	valid_h2_kernel_norms_min: 0.102460697293
	valid_h2_kernel_norms_min: 0.102460697293
INFO:pylearn2.monitor:	valid_h2_max_x.max_u: 6.51273345947
	valid_h2_max_x.max_u: 6.51273345947
INFO:pylearn2.monitor:	valid_h2_max_x.mean_u: 4.39955377579
	valid_h2_max_x.mean_u: 4.39955377579
INFO:pylearn2.monitor:	valid_h2_max_x.min_u: 2.94254589081
	valid_h2_max_x.min_u: 2.94254589081
INFO:pylearn2.monitor:	valid_h2_mean_x.max_u: 0.851254761219
	valid_h2_mean_x.max_u: 0.851254761219
INFO:pylearn2.monitor:	valid_h2_mean_x.mean_u: 0.346943378448
	valid_h2_mean_x.mean_u: 0.346943378448
INFO:pylearn2.monitor:	valid_h2_mean_x.min_u: -0.16730299592
	valid_h2_mean_x.min_u: -0.16730299592
INFO:pylearn2.monitor:	valid_h2_min_x.max_u: -0.2498036623
	valid_h2_min_x.max_u: -0.2498036623
INFO:pylearn2.monitor:	valid_h2_min_x.mean_u: -1.96489655972
	valid_h2_min_x.mean_u: -1.96489655972
INFO:pylearn2.monitor:	valid_h2_min_x.min_u: -2.84469294548
	valid_h2_min_x.min_u: -2.84469294548
INFO:pylearn2.monitor:	valid_h2_range_x.max_u: 8.44579410553
	valid_h2_range_x.max_u: 8.44579410553
INFO:pylearn2.monitor:	valid_h2_range_x.mean_u: 6.36444950104
	valid_h2_range_x.mean_u: 6.36444950104
INFO:pylearn2.monitor:	valid_h2_range_x.min_u: 3.6334426403
	valid_h2_range_x.min_u: 3.6334426403
INFO:pylearn2.monitor:	valid_objective: 0.157433494925
	valid_objective: 0.157433494925
INFO:pylearn2.monitor:	valid_y_col_norms_max: 1.23267877102
	valid_y_col_norms_max: 1.23267877102
INFO:pylearn2.monitor:	valid_y_col_norms_mean: 1.08009660244
	valid_y_col_norms_mean: 1.08009660244
INFO:pylearn2.monitor:	valid_y_col_norms_min: 0.989951074123
	valid_y_col_norms_min: 0.989951074123
INFO:pylearn2.monitor:	valid_y_max_max_class: 0.999998092651
	valid_y_max_max_class: 0.999998092651
INFO:pylearn2.monitor:	valid_y_mean_max_class: 0.978539168835
	valid_y_mean_max_class: 0.978539168835
INFO:pylearn2.monitor:	valid_y_min_max_class: 0.519389212132
	valid_y_min_max_class: 0.519389212132
INFO:pylearn2.monitor:	valid_y_misclass: 0.0216346178204
	valid_y_misclass: 0.0216346178204
INFO:pylearn2.monitor:	valid_y_nll: 0.0756546407938
	valid_y_nll: 0.0756546407938
INFO:pylearn2.monitor:	valid_y_row_norms_max: 0.365562856197
	valid_y_row_norms_max: 0.365562856197
INFO:pylearn2.monitor:	valid_y_row_norms_mean: 0.221725210547
	valid_y_row_norms_mean: 0.221725210547
INFO:pylearn2.monitor:	valid_y_row_norms_min: 0.0390614829957
	valid_y_row_norms_min: 0.0390614829957
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.265562 seconds
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.265562 seconds
INFO:pylearn2.train:Time this epoch: 36.106271 seconds
Time this epoch: 36.106271 seconds
INFO:pylearn2.monitor:Monitoring step:
Monitoring step:
INFO:pylearn2.monitor:	Epochs seen: 6
	Epochs seen: 6
INFO:pylearn2.monitor:	Batches seen: 2340
	Batches seen: 2340
INFO:pylearn2.monitor:	Examples seen: 299520
	Examples seen: 299520
INFO:pylearn2.monitor:	learning_rate: 0.045532438904
	learning_rate: 0.045532438904
INFO:pylearn2.monitor:	momentum: 0.504015803337
	momentum: 0.504015803337
INFO:pylearn2.monitor:	total_seconds_last_epoch: 41.9678344727
	total_seconds_last_epoch: 41.9678344727
INFO:pylearn2.monitor:	training_seconds_this_epoch: 36.1062583923
	training_seconds_this_epoch: 36.1062583923
INFO:pylearn2.monitor:	valid_h0_kernel_norms_max: 0.819090723991
	valid_h0_kernel_norms_max: 0.819090723991
INFO:pylearn2.monitor:	valid_h0_kernel_norms_mean: 0.266360014677
	valid_h0_kernel_norms_mean: 0.266360014677
INFO:pylearn2.monitor:	valid_h0_kernel_norms_min: 0.0234560873359
	valid_h0_kernel_norms_min: 0.0234560873359
INFO:pylearn2.monitor:	valid_h0_max_x.max_u: 1.1194986105
	valid_h0_max_x.max_u: 1.1194986105
INFO:pylearn2.monitor:	valid_h0_max_x.mean_u: 0.794362306595
	valid_h0_max_x.mean_u: 0.794362306595
INFO:pylearn2.monitor:	valid_h0_max_x.min_u: 0.434105366468
	valid_h0_max_x.min_u: 0.434105366468
INFO:pylearn2.monitor:	valid_h0_mean_x.max_u: 0.265150278807
	valid_h0_mean_x.max_u: 0.265150278807
INFO:pylearn2.monitor:	valid_h0_mean_x.mean_u: 0.14097854495
	valid_h0_mean_x.mean_u: 0.14097854495
INFO:pylearn2.monitor:	valid_h0_mean_x.min_u: 0.0407675877213
	valid_h0_mean_x.min_u: 0.0407675877213
INFO:pylearn2.monitor:	valid_h0_min_x.max_u: 4.3874631956e-05
	valid_h0_min_x.max_u: 4.3874631956e-05
INFO:pylearn2.monitor:	valid_h0_min_x.mean_u: -0.331941515207
	valid_h0_min_x.mean_u: -0.331941515207
INFO:pylearn2.monitor:	valid_h0_min_x.min_u: -1.98202872276
	valid_h0_min_x.min_u: -1.98202872276
INFO:pylearn2.monitor:	valid_h0_range_x.max_u: 3.09845900536
	valid_h0_range_x.max_u: 3.09845900536
INFO:pylearn2.monitor:	valid_h0_range_x.mean_u: 1.12630355358
	valid_h0_range_x.mean_u: 1.12630355358
INFO:pylearn2.monitor:	valid_h0_range_x.min_u: 0.448768764734
	valid_h0_range_x.min_u: 0.448768764734
INFO:pylearn2.monitor:	valid_h1_kernel_norms_max: 0.910650312901
	valid_h1_kernel_norms_max: 0.910650312901
INFO:pylearn2.monitor:	valid_h1_kernel_norms_mean: 0.424247533083
	valid_h1_kernel_norms_mean: 0.424247533083
INFO:pylearn2.monitor:	valid_h1_kernel_norms_min: 0.161410033703
	valid_h1_kernel_norms_min: 0.161410033703
INFO:pylearn2.monitor:	valid_h1_max_x.max_u: 4.49278879166
	valid_h1_max_x.max_u: 4.49278879166
INFO:pylearn2.monitor:	valid_h1_max_x.mean_u: 2.39413166046
	valid_h1_max_x.mean_u: 2.39413166046
INFO:pylearn2.monitor:	valid_h1_max_x.min_u: 1.30733573437
	valid_h1_max_x.min_u: 1.30733573437
INFO:pylearn2.monitor:	valid_h1_mean_x.max_u: 1.02295434475
	valid_h1_mean_x.max_u: 1.02295434475
INFO:pylearn2.monitor:	valid_h1_mean_x.mean_u: 0.364295601845
	valid_h1_mean_x.mean_u: 0.364295601845
INFO:pylearn2.monitor:	valid_h1_mean_x.min_u: 0.0108966771513
	valid_h1_mean_x.min_u: 0.0108966771513
INFO:pylearn2.monitor:	valid_h1_min_x.max_u: 0.114199914038
	valid_h1_min_x.max_u: 0.114199914038
INFO:pylearn2.monitor:	valid_h1_min_x.mean_u: -0.703905105591
	valid_h1_min_x.mean_u: -0.703905105591
INFO:pylearn2.monitor:	valid_h1_min_x.min_u: -1.30138123035
	valid_h1_min_x.min_u: -1.30138123035
INFO:pylearn2.monitor:	valid_h1_range_x.max_u: 5.39968442917
	valid_h1_range_x.max_u: 5.39968442917
INFO:pylearn2.monitor:	valid_h1_range_x.mean_u: 3.0980360508
	valid_h1_range_x.mean_u: 3.0980360508
INFO:pylearn2.monitor:	valid_h1_range_x.min_u: 1.50967144966
	valid_h1_range_x.min_u: 1.50967144966
INFO:pylearn2.monitor:	valid_h2_kernel_norms_max: 0.832981228828
	valid_h2_kernel_norms_max: 0.832981228828
INFO:pylearn2.monitor:	valid_h2_kernel_norms_mean: 0.346081286669
	valid_h2_kernel_norms_mean: 0.346081286669
INFO:pylearn2.monitor:	valid_h2_kernel_norms_min: 0.108712531626
	valid_h2_kernel_norms_min: 0.108712531626
INFO:pylearn2.monitor:	valid_h2_max_x.max_u: 6.00907659531
	valid_h2_max_x.max_u: 6.00907659531
INFO:pylearn2.monitor:	valid_h2_max_x.mean_u: 4.25149965286
	valid_h2_max_x.mean_u: 4.25149965286
INFO:pylearn2.monitor:	valid_h2_max_x.min_u: 3.05563521385
	valid_h2_max_x.min_u: 3.05563521385
INFO:pylearn2.monitor:	valid_h2_mean_x.max_u: 0.568969786167
	valid_h2_mean_x.max_u: 0.568969786167
INFO:pylearn2.monitor:	valid_h2_mean_x.mean_u: 0.243508979678
	valid_h2_mean_x.mean_u: 0.243508979678
INFO:pylearn2.monitor:	valid_h2_mean_x.min_u: -0.098829433322
	valid_h2_mean_x.min_u: -0.098829433322
INFO:pylearn2.monitor:	valid_h2_min_x.max_u: -0.489753186703
	valid_h2_min_x.max_u: -0.489753186703
INFO:pylearn2.monitor:	valid_h2_min_x.mean_u: -2.11399626732
	valid_h2_min_x.mean_u: -2.11399626732
INFO:pylearn2.monitor:	valid_h2_min_x.min_u: -3.14183878899
	valid_h2_min_x.min_u: -3.14183878899
INFO:pylearn2.monitor:	valid_h2_range_x.max_u: 8.44336986542
	valid_h2_range_x.max_u: 8.44336986542
INFO:pylearn2.monitor:	valid_h2_range_x.mean_u: 6.36549568176
	valid_h2_range_x.mean_u: 6.36549568176
INFO:pylearn2.monitor:	valid_h2_range_x.min_u: 3.82472348213
	valid_h2_range_x.min_u: 3.82472348213
INFO:pylearn2.monitor:	valid_objective: 0.107189886272
	valid_objective: 0.107189886272
INFO:pylearn2.monitor:	valid_y_col_norms_max: 1.30210864544
	valid_y_col_norms_max: 1.30210864544
INFO:pylearn2.monitor:	valid_y_col_norms_mean: 1.16264927387
	valid_y_col_norms_mean: 1.16264927387
INFO:pylearn2.monitor:	valid_y_col_norms_min: 1.06924128532
	valid_y_col_norms_min: 1.06924128532
INFO:pylearn2.monitor:	valid_y_max_max_class: 0.999998986721
	valid_y_max_max_class: 0.999998986721
INFO:pylearn2.monitor:	valid_y_mean_max_class: 0.984750509262
	valid_y_mean_max_class: 0.984750509262
INFO:pylearn2.monitor:	valid_y_min_max_class: 0.560395240784
	valid_y_min_max_class: 0.560395240784
INFO:pylearn2.monitor:	valid_y_misclass: 0.0183293297887
	valid_y_misclass: 0.0183293297887
INFO:pylearn2.monitor:	valid_y_nll: 0.0652837082744
	valid_y_nll: 0.0652837082744
INFO:pylearn2.monitor:	valid_y_row_norms_max: 0.395480304956
	valid_y_row_norms_max: 0.395480304956
INFO:pylearn2.monitor:	valid_y_row_norms_mean: 0.239963307977
	valid_y_row_norms_mean: 0.239963307977
INFO:pylearn2.monitor:	valid_y_row_norms_min: 0.0457712672651
	valid_y_row_norms_min: 0.0457712672651
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.265917 seconds
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.265917 seconds
INFO:pylearn2.train:Time this epoch: 36.090845 seconds
Time this epoch: 36.090845 seconds
INFO:pylearn2.monitor:Monitoring step:
Monitoring step:
INFO:pylearn2.monitor:	Epochs seen: 7
	Epochs seen: 7
INFO:pylearn2.monitor:	Batches seen: 2730
	Batches seen: 2730
INFO:pylearn2.monitor:	Examples seen: 349440
	Examples seen: 349440
INFO:pylearn2.monitor:	learning_rate: 0.0448276139796
	learning_rate: 0.0448276139796
INFO:pylearn2.monitor:	momentum: 0.504819512367
	momentum: 0.504819512367
INFO:pylearn2.monitor:	total_seconds_last_epoch: 41.9819221497
	total_seconds_last_epoch: 41.9819221497
INFO:pylearn2.monitor:	training_seconds_this_epoch: 36.0908622742
	training_seconds_this_epoch: 36.0908622742
INFO:pylearn2.monitor:	valid_h0_kernel_norms_max: 0.812064886093
	valid_h0_kernel_norms_max: 0.812064886093
INFO:pylearn2.monitor:	valid_h0_kernel_norms_mean: 0.288997918367
	valid_h0_kernel_norms_mean: 0.288997918367
INFO:pylearn2.monitor:	valid_h0_kernel_norms_min: 0.0236668493599
	valid_h0_kernel_norms_min: 0.0236668493599
INFO:pylearn2.monitor:	valid_h0_max_x.max_u: 1.14284479618
	valid_h0_max_x.max_u: 1.14284479618
INFO:pylearn2.monitor:	valid_h0_max_x.mean_u: 0.799123704433
	valid_h0_max_x.mean_u: 0.799123704433
INFO:pylearn2.monitor:	valid_h0_max_x.min_u: 0.373483389616
	valid_h0_max_x.min_u: 0.373483389616
INFO:pylearn2.monitor:	valid_h0_mean_x.max_u: 0.261414080858
	valid_h0_mean_x.max_u: 0.261414080858
INFO:pylearn2.monitor:	valid_h0_mean_x.mean_u: 0.130941092968
	valid_h0_mean_x.mean_u: 0.130941092968
INFO:pylearn2.monitor:	valid_h0_mean_x.min_u: 0.0481543503702
	valid_h0_mean_x.min_u: 0.0481543503702
INFO:pylearn2.monitor:	valid_h0_min_x.max_u: -0.022609917447
	valid_h0_min_x.max_u: -0.022609917447
INFO:pylearn2.monitor:	valid_h0_min_x.mean_u: -0.366401493549
	valid_h0_min_x.mean_u: -0.366401493549
INFO:pylearn2.monitor:	valid_h0_min_x.min_u: -1.93226706982
	valid_h0_min_x.min_u: -1.93226706982
INFO:pylearn2.monitor:	valid_h0_range_x.max_u: 2.95308661461
	valid_h0_range_x.max_u: 2.95308661461
INFO:pylearn2.monitor:	valid_h0_range_x.mean_u: 1.16552519798
	valid_h0_range_x.mean_u: 1.16552519798
INFO:pylearn2.monitor:	valid_h0_range_x.min_u: 0.400785803795
	valid_h0_range_x.min_u: 0.400785803795
INFO:pylearn2.monitor:	valid_h1_kernel_norms_max: 0.974981665611
	valid_h1_kernel_norms_max: 0.974981665611
INFO:pylearn2.monitor:	valid_h1_kernel_norms_mean: 0.46086961031
	valid_h1_kernel_norms_mean: 0.46086961031
INFO:pylearn2.monitor:	valid_h1_kernel_norms_min: 0.161946594715
	valid_h1_kernel_norms_min: 0.161946594715
INFO:pylearn2.monitor:	valid_h1_max_x.max_u: 3.85647296906
	valid_h1_max_x.max_u: 3.85647296906
INFO:pylearn2.monitor:	valid_h1_max_x.mean_u: 2.2985663414
	valid_h1_max_x.mean_u: 2.2985663414
INFO:pylearn2.monitor:	valid_h1_max_x.min_u: 1.48609316349
	valid_h1_max_x.min_u: 1.48609316349
INFO:pylearn2.monitor:	valid_h1_mean_x.max_u: 0.707763493061
	valid_h1_mean_x.max_u: 0.707763493061
INFO:pylearn2.monitor:	valid_h1_mean_x.mean_u: 0.307959198952
	valid_h1_mean_x.mean_u: 0.307959198952
INFO:pylearn2.monitor:	valid_h1_mean_x.min_u: -0.0097123477608
	valid_h1_mean_x.min_u: -0.0097123477608
INFO:pylearn2.monitor:	valid_h1_min_x.max_u: 0.0593514814973
	valid_h1_min_x.max_u: 0.0593514814973
INFO:pylearn2.monitor:	valid_h1_min_x.mean_u: -0.714572250843
	valid_h1_min_x.mean_u: -0.714572250843
INFO:pylearn2.monitor:	valid_h1_min_x.min_u: -1.43437886238
	valid_h1_min_x.min_u: -1.43437886238
INFO:pylearn2.monitor:	valid_h1_range_x.max_u: 4.87294960022
	valid_h1_range_x.max_u: 4.87294960022
INFO:pylearn2.monitor:	valid_h1_range_x.mean_u: 3.0131380558
	valid_h1_range_x.mean_u: 3.0131380558
INFO:pylearn2.monitor:	valid_h1_range_x.min_u: 1.6042984724
	valid_h1_range_x.min_u: 1.6042984724
INFO:pylearn2.monitor:	valid_h2_kernel_norms_max: 0.880443394184
	valid_h2_kernel_norms_max: 0.880443394184
INFO:pylearn2.monitor:	valid_h2_kernel_norms_mean: 0.369259923697
	valid_h2_kernel_norms_mean: 0.369259923697
INFO:pylearn2.monitor:	valid_h2_kernel_norms_min: 0.117143787444
	valid_h2_kernel_norms_min: 0.117143787444
INFO:pylearn2.monitor:	valid_h2_max_x.max_u: 5.74927282333
	valid_h2_max_x.max_u: 5.74927282333
INFO:pylearn2.monitor:	valid_h2_max_x.mean_u: 4.23042631149
	valid_h2_max_x.mean_u: 4.23042631149
INFO:pylearn2.monitor:	valid_h2_max_x.min_u: 2.90393185616
	valid_h2_max_x.min_u: 2.90393185616
INFO:pylearn2.monitor:	valid_h2_mean_x.max_u: 0.6088976264
	valid_h2_mean_x.max_u: 0.6088976264
INFO:pylearn2.monitor:	valid_h2_mean_x.mean_u: 0.326521039009
	valid_h2_mean_x.mean_u: 0.326521039009
INFO:pylearn2.monitor:	valid_h2_mean_x.min_u: 0.00657832156867
	valid_h2_mean_x.min_u: 0.00657832156867
INFO:pylearn2.monitor:	valid_h2_min_x.max_u: -0.592217028141
	valid_h2_min_x.max_u: -0.592217028141
INFO:pylearn2.monitor:	valid_h2_min_x.mean_u: -1.85787940025
	valid_h2_min_x.mean_u: -1.85787940025
INFO:pylearn2.monitor:	valid_h2_min_x.min_u: -2.84205007553
	valid_h2_min_x.min_u: -2.84205007553
INFO:pylearn2.monitor:	valid_h2_range_x.max_u: 7.75442886353
	valid_h2_range_x.max_u: 7.75442886353
INFO:pylearn2.monitor:	valid_h2_range_x.mean_u: 6.08830785751
	valid_h2_range_x.mean_u: 6.08830785751
INFO:pylearn2.monitor:	valid_h2_range_x.min_u: 3.55484294891
	valid_h2_range_x.min_u: 3.55484294891
INFO:pylearn2.monitor:	valid_objective: 0.0918980836868
	valid_objective: 0.0918980836868
INFO:pylearn2.monitor:	valid_y_col_norms_max: 1.34723103046
	valid_y_col_norms_max: 1.34723103046
INFO:pylearn2.monitor:	valid_y_col_norms_mean: 1.22044801712
	valid_y_col_norms_mean: 1.22044801712
INFO:pylearn2.monitor:	valid_y_col_norms_min: 1.13524496555
	valid_y_col_norms_min: 1.13524496555
INFO:pylearn2.monitor:	valid_y_max_max_class: 1.0
	valid_y_max_max_class: 1.0
INFO:pylearn2.monitor:	valid_y_mean_max_class: 0.987926542759
	valid_y_mean_max_class: 0.987926542759
INFO:pylearn2.monitor:	valid_y_min_max_class: 0.578431546688
	valid_y_min_max_class: 0.578431546688
INFO:pylearn2.monitor:	valid_y_misclass: 0.0155248455703
	valid_y_misclass: 0.0155248455703
INFO:pylearn2.monitor:	valid_y_nll: 0.0513485185802
	valid_y_nll: 0.0513485185802
INFO:pylearn2.monitor:	valid_y_row_norms_max: 0.413898706436
	valid_y_row_norms_max: 0.413898706436
INFO:pylearn2.monitor:	valid_y_row_norms_mean: 0.252843290567
	valid_y_row_norms_mean: 0.252843290567
INFO:pylearn2.monitor:	valid_y_row_norms_min: 0.0549342893064
	valid_y_row_norms_min: 0.0549342893064
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl...
INFO:pylearn2.train_extensions.best_params:Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.267191 seconds
Saving to /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl done. Time elapsed: 0.267191 seconds
WARNING:pylearn2.train:Time budget exceeded (632.513/600 seconds).
WARNING (pylearn2.train): Time budget exceeded (632.513/600 seconds).

In [45]:
!du -h /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl


5.4M	/afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl

In [46]:
!rm /afs/inf.ed.ac.uk/user/s08/s0805516/repos/pylearn2/pylearn2/scripts/papers/maxout/mnist_best.pkl

Compiling the theano functions used to run the network will take a long time for this example. This is because the number of theano variables and ops used to specify the computation is relatively large. There is no single theano op for doing max pooling with overlapping pooling windows, so pylearn2 builds a large expression graph using indexing operations to accomplish the max pooling.

After the model is trained, we can use the print_monitor script to print the last monitoring entry of a saved model. By running it on "convolutional_network_best.pkl", we can see the performance of the model at the point where it did the best on the validation set.


In [ ]:
!print_monitor.py convolutional_network_best.pkl | grep test_y_misclass

The test set error has dropped to 0.74%! This is a big improvement over the standard MLP.

We can also look at the convolution kernels learned by the first layer, to see that the network is looking for shifted versions of small pieces of penstrokes.


In [ ]:
!show_weights.py convolutional_network_best.pkl

Further reading

You can find more information on convolutional networks from the following sources:

LISA lab's Deep Learning Tutorials: Convolutional Neural Networks (LeNet)

This is by no means a complete list.