annotate pylearn/formulas/nnet.py @ 1491:8be8cdde97ee

tensor instead of T
author Emmanuel Bengio <bengioe@iro.umontreal.ca>
date Wed, 27 Jul 2011 13:27:00 -0400
parents 9d2323513092
children
rev   line source
1489
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
1 import theano
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
2 from theano import tensor
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
3 from theano.sandbox import neighbours
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
4
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
5 import tags
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
6
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
7
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
8 @tags.tags('nnet', 'max pooling', 'inverse')
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
9 def inverse_max_pooling(max_pool_out,output_shape,pooling_shape=(2,2),
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
10 ignore_borders = True):
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
11 """
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
12 Return a symbolic variable representing the inverse of a max pooling
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
13 on a given tensor.
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
14
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
15 Parameters
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
16 ----------
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
17 max_pool_out : 4D tensor
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
18 A Theano variable representing the output of a max pooling
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
19 output_shape : 4D shape
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
20 The shape of the input before pooling
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
21 pooling_shape : 2D shape
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
22 The shape of the pooling windows
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
23 ignore_borders : boolean
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
24 Will pad borders with zeros if true
1490
9d2323513092 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents: 1489
diff changeset
25
9d2323513092 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents: 1489
diff changeset
26 Returns
9d2323513092 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents: 1489
diff changeset
27 -------
9d2323513092 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents: 1489
diff changeset
28 ret : 4D tensor
9d2323513092 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents: 1489
diff changeset
29 A Theano variable with same shape as output_shape
1489
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
30 """
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
31 # flatten the input and repeat it
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
32 repeated_input = [max_pool_out.flatten()]*(pooling_shape[0]*pooling_shape[1])
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
33
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
34 # concatenate the repeated vectors into
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
35 # a 2D matrix in the format neibs2images wants
1491
8be8cdde97ee tensor instead of T
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents: 1490
diff changeset
36 stacked_conv_neibs = tensor.stack(*repeated_input).T
1489
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
37
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
38 # then get back a stretched version of the stacked neighbours
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
39 stretch_unpooling_out = \
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
40 neighbours.neibs2images(stacked_conv_neibs,
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
41 pooling_shape,
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
42 output_shape,
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
43 'ignore_borders' if ignore_borders else 'valid')
35a3a4e2d999 added formulas/nnet.py with inverse_max_pooling(...)
Emmanuel Bengio <bengioe@iro.umontreal.ca>
parents:
diff changeset
44 return stretch_unpooling_out