Python theano.tensor.nnet.conv.conv2d() Examples
The following are 30
code examples of theano.tensor.nnet.conv.conv2d().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
theano.tensor.nnet.conv
, or try the search function
.
Example #1
Source File: conv_net_classes.py From personality-detection with MIT License | 6 votes |
def predict(self, new_data, batch_size): """ predict for new data """ img_shape = None#(batch_size, 1, self.image_shape[2], self.image_shape[3]) conv_out = conv.conv2d(input=new_data, filters=self.W, filter_shape=self.filter_shape, image_shape=img_shape) if self.non_linear=="tanh": conv_out_tanh = T.tanh(conv_out + self.b.dimshuffle('x', 0, 'x', 'x')) output = downsample.max_pool_2d(input=conv_out_tanh, ds=self.poolsize, ignore_border=True) if self.non_linear=="relu": conv_out_tanh = ReLU(conv_out + self.b.dimshuffle('x', 0, 'x', 'x')) output = downsample.max_pool_2d(input=conv_out_tanh, ds=self.poolsize, ignore_border=True) else: pooled_out = downsample.max_pool_2d(input=conv_out, ds=self.poolsize, ignore_border=True) output = pooled_out + self.b.dimshuffle('x', 0, 'x', 'x') return output
Example #2
Source File: layers.py From RATM with MIT License | 6 votes |
def forward(self, inputs): # if padding is greater than zero, we insert the inputs into # the center of a larger zero array, effectively adding zero # borders if self.pad > 0: padded_inputs = T.set_subtensor( T.zeros((inputs.shape[0], self.inputs_shape[1], self.inputs_shape[2] + 2 * self.pad, self.inputs_shape[3] + 2 * self.pad), dtype=inputs.dtype)[:, :, self.pad:-self.pad, self.pad:-self.pad], inputs) else: padded_inputs = inputs padded_inputs_shape = ( None, self.inputs_shape[1], self.inputs_shape[2] + 2 * self.pad, self.inputs_shape[3] + 2 * self.pad) return conv.conv2d( input=padded_inputs, filters=self.W, filter_shape=self.filter_shape, image_shape=padded_inputs_shape)
Example #3
Source File: nn_classes.py From optimus with Apache License 2.0 | 6 votes |
def predict(self, new_data, batch_size): """ predict for new data """ img_shape = (batch_size, 1, self.image_shape[2], self.image_shape[3]) conv_out = conv.conv2d(input=new_data, filters=self.W, filter_shape=self.filter_shape, image_shape=img_shape) if self.non_linear=="tanh": conv_out_tanh = T.tanh(conv_out + self.b.dimshuffle('x', 0, 'x', 'x')) output = downsample.max_pool_2d(input=conv_out_tanh, ds=self.poolsize, ignore_border=True) if self.non_linear=="relu": conv_out_tanh = ReLU(conv_out + self.b.dimshuffle('x', 0, 'x', 'x')) output = downsample.max_pool_2d(input=conv_out_tanh, ds=self.poolsize, ignore_border=True) else: pooled_out = downsample.max_pool_2d(input=conv_out, ds=self.poolsize, ignore_border=True) output = pooled_out + self.b.dimshuffle('x', 0, 'x', 'x') return output
Example #4
Source File: conv2d.py From TextDetector with GNU General Public License v3.0 | 6 votes |
def lmul_T(self, x): """ .. todo:: WRITEME """ # dot(x, A.T) dummy_v = tensor.tensor4() z_hs = conv2d(dummy_v, self._filters, image_shape=self._img_shape, filter_shape=self._filters_shape, subsample=self._subsample, border_mode=self._border_mode, ) xfilters, xdummy = z_hs.owner.op.grad((dummy_v, self._filters), (x,)) return xfilters
Example #5
Source File: conv_net_classes.py From deeplearning4nlp-tutorial with Apache License 2.0 | 6 votes |
def predict(self, new_data, batch_size): """ predict for new data """ img_shape = (batch_size, 1, self.image_shape[2], self.image_shape[3]) conv_out = conv.conv2d(input=new_data, filters=self.W, filter_shape=self.filter_shape, image_shape=img_shape) if self.non_linear=="tanh": conv_out_tanh = T.tanh(conv_out + self.b.dimshuffle('x', 0, 'x', 'x')) output = downsample.max_pool_2d(input=conv_out_tanh, ds=self.poolsize, ignore_border=True) if self.non_linear=="relu": conv_out_tanh = ReLU(conv_out + self.b.dimshuffle('x', 0, 'x', 'x')) output = downsample.max_pool_2d(input=conv_out_tanh, ds=self.poolsize, ignore_border=True) else: pooled_out = downsample.max_pool_2d(input=conv_out, ds=self.poolsize, ignore_border=True) output = pooled_out + self.b.dimshuffle('x', 0, 'x', 'x') return output
Example #6
Source File: 05_convolutional_network.py From computer-vision-resources with MIT License | 6 votes |
def model(X, w, w2, w3, w4, p_drop_conv, p_drop_hidden): l1a = rectify(conv2d(X, w, border_mode='full')) l1 = max_pool_2d(l1a, (2, 2)) l1 = dropout(l1, p_drop_conv) l2a = rectify(conv2d(l1, w2)) l2 = max_pool_2d(l2a, (2, 2)) l2 = dropout(l2, p_drop_conv) l3a = rectify(conv2d(l2, w3)) l3b = max_pool_2d(l3a, (2, 2)) l3 = T.flatten(l3b, outdim=2) l3 = dropout(l3, p_drop_conv) l4 = rectify(T.dot(l3, w4)) l4 = dropout(l4, p_drop_hidden) pyx = softmax(T.dot(l4, w_o)) return l1, l2, l3, l4, pyx
Example #7
Source File: 5_convolutional_net.py From Theano-Tutorials with MIT License | 6 votes |
def model(X, w, w2, w3, w4, p_drop_conv, p_drop_hidden): l1a = rectify(conv2d(X, w, border_mode='full')) l1 = max_pool_2d(l1a, (2, 2)) l1 = dropout(l1, p_drop_conv) l2a = rectify(conv2d(l1, w2)) l2 = max_pool_2d(l2a, (2, 2)) l2 = dropout(l2, p_drop_conv) l3a = rectify(conv2d(l2, w3)) l3b = max_pool_2d(l3a, (2, 2)) l3 = T.flatten(l3b, outdim=2) l3 = dropout(l3, p_drop_conv) l4 = rectify(T.dot(l3, w4)) l4 = dropout(l4, p_drop_hidden) pyx = softmax(T.dot(l4, w_o)) return l1, l2, l3, l4, pyx
Example #8
Source File: layers.py From kaggle-galaxies with BSD 3-Clause "New" or "Revised" License | 6 votes |
def output(self, input=None, dropout_active=True, *args, **kwargs): if input == None: input = self.input_layer.output(dropout_active=dropout_active, *args, **kwargs) if dropout_active and (self.dropout > 0.): retain_prob = 1 - self.dropout if self.dropout_tied: # tying of the dropout masks across the entire feature maps, so broadcast across the feature maps. mask = srng.binomial((input.shape[0], input.shape[1]), p=retain_prob, dtype='int32').astype('float32').dimshuffle(0, 1, 'x', 'x') else: mask = srng.binomial(input.shape, p=retain_prob, dtype='int32').astype('float32') # apply the input mask and rescale the input accordingly. By doing this it's no longer necessary to rescale the weights at test time. input = input / retain_prob * mask if self.border_mode in ['valid', 'full']: conved = conv2d(input, self.W, subsample=(1, 1), image_shape=self.input_shape, filter_shape=self.filter_shape, border_mode=self.border_mode) elif self.border_mode == 'same': conved = conv2d(input, self.W, subsample=(1, 1), image_shape=self.input_shape, filter_shape=self.filter_shape, border_mode='full') shift_x = (self.filter_width - 1) // 2 shift_y = (self.filter_height - 1) // 2 conved = conved[:, :, shift_x:self.input_shape[2] + shift_x, shift_y:self.input_shape[3] + shift_y] else: raise RuntimeError("Invalid border mode: '%s'" % self.border_mode) return self.nonlinearity(conved + self.b.dimshuffle('x', 0, 'x', 'x'))
Example #9
Source File: test_conv.py From attention-lvcsr with MIT License | 6 votes |
def test_broadcast_grad(): rng = numpy.random.RandomState(utt.fetch_seed()) x1 = T.tensor4('x') x1_data = rng.randn(1, 1, 300, 300) sigma = T.scalar('sigma') sigma_data = 20 window_radius = 3 filter_1d = T.arange(-window_radius, window_radius+1) filter_1d = filter_1d.astype(theano.config.floatX) filter_1d = T.exp(-0.5*filter_1d**2/sigma**2) filter_1d = filter_1d / filter_1d.sum() filter_W = filter_1d.dimshuffle(['x', 'x', 0, 'x']) y = theano.tensor.nnet.conv2d(x1, filter_W, border_mode='full', filter_shape=[1, 1, None, None]) theano.grad(y.sum(), sigma)
Example #10
Source File: opt.py From attention-lvcsr with MIT License | 6 votes |
def local_conv2d_cpu(node): if not isinstance(node.op, AbstractConv2d): return None img, kern = node.inputs if ((not isinstance(img.type, TensorType) or not isinstance(kern.type, TensorType))): return None if node.op.border_mode not in ['full', 'valid']: return None if not node.op.filter_flip: # Not tested yet return None rval = conv2d(img, kern, node.op.imshp, node.op.kshp, border_mode=node.op.border_mode, subsample=node.op.subsample) copy_stack_trace(node.outputs[0], rval) return [rval]
Example #11
Source File: opt.py From D-VAE with MIT License | 6 votes |
def local_conv2d_cpu(node): if not isinstance(node.op, AbstractConv2d): return None img, kern = node.inputs if ((not isinstance(img.type, TensorType) or not isinstance(kern.type, TensorType))): return None if node.op.border_mode not in ['full', 'valid']: return None if not node.op.filter_flip: # Not tested yet return None rval = conv2d(img, kern, node.op.imshp, node.op.kshp, border_mode=node.op.border_mode, subsample=node.op.subsample) copy_stack_trace(node.outputs[0], rval) return [rval]
Example #12
Source File: test_conv.py From D-VAE with MIT License | 6 votes |
def test_broadcast_grad(): rng = numpy.random.RandomState(utt.fetch_seed()) x1 = T.tensor4('x') x1_data = rng.randn(1, 1, 300, 300) sigma = T.scalar('sigma') sigma_data = 20 window_radius = 3 filter_1d = T.arange(-window_radius, window_radius+1) filter_1d = filter_1d.astype(theano.config.floatX) filter_1d = T.exp(-0.5*filter_1d**2/sigma**2) filter_1d = filter_1d / filter_1d.sum() filter_W = filter_1d.dimshuffle(['x', 'x', 0, 'x']) y = theano.tensor.nnet.conv2d(x1, filter_W, border_mode='full', filter_shape=[1, 1, None, None]) theano.grad(y.sum(), sigma)
Example #13
Source File: 6_convnet_dropout.py From theano-tutorial with MIT License | 5 votes |
def model(x, w_c1, b_c1, w_c2, b_c2, w_h3, b_h3, w_o, b_o, p=0.0): c1 = T.maximum(0, conv2d(x, w_c1) + b_c1.dimshuffle('x', 0, 'x', 'x')) p1 = max_pool_2d(c1, (3, 3)) c2 = T.maximum(0, conv2d(p1, w_c2) + b_c2.dimshuffle('x', 0, 'x', 'x')) p2 = max_pool_2d(c2, (2, 2)) p2_flat = p2.flatten(2) p2_flat = dropout(p2_flat, p=p) h3 = T.maximum(0, T.dot(p2_flat, w_h3) + b_h3) p_y_given_x = T.nnet.softmax(T.dot(h3, w_o) + b_o) return p_y_given_x
Example #14
Source File: conv_layer.py From kaggle-seizure-prediction with MIT License | 5 votes |
def __init__(self, rng, input, filter_shape, image_shape, poolsize, activation, weights_variance, subsample): assert image_shape[1] == filter_shape[1] self.input =input if activation == 'tanh': activation_function = lambda x: T.tanh(x) fan_in = np.prod(filter_shape[1:]) fan_out = (filter_shape[0] * np.prod(filter_shape[2:]) / np.prod(poolsize)) W_bound = np.sqrt(6. / (fan_in + fan_out)) W_values = np.asarray(rng.uniform(low=-W_bound, high=W_bound, size=filter_shape), dtype='float32') b_values = np.zeros((filter_shape[0],), dtype='float32') elif activation == 'relu': activation_function = lambda x: T.maximum(0.0, x) W_values = np.asarray(rng.normal(0.0, weights_variance, size=filter_shape), dtype='float32') b_values = np.ones((filter_shape[0],), dtype='float32') / 10.0 else: raise ValueError('unknown activation function') self.W = theano.shared(value=W_values, name='W', borrow=True) self.b = theano.shared(value=b_values, name='b', borrow=True) conv_out = conv.conv2d(input, self.W, filter_shape=filter_shape, image_shape=image_shape, subsample=subsample) pooled_out = downsample.max_pool_2d(conv_out, poolsize, ignore_border=True) if poolsize[1] > 1 else conv_out self.output = activation_function(pooled_out + self.b.dimshuffle('x', 0, 'x', 'x')) self.weights = [self.W, self.b]
Example #15
Source File: test_conv.py From D-VAE with MIT License | 5 votes |
def setUp(self): super(TestConv2D, self).setUp() self.input = T.tensor4('input', dtype=self.dtype) self.input.name = 'default_V' self.filters = T.tensor4('filters', dtype=self.dtype) self.filters.name = 'default_filters' if not conv.imported_scipy_signal and theano.config.cxx == "": raise SkipTest("conv2d tests need SciPy or a c++ compiler")
Example #16
Source File: conv.py From deepy with MIT License | 5 votes |
def compute_tensor(self, x): if self.reshape_input: img_width = T.cast(T.sqrt(x.shape[1]), "int32") x = x.reshape((x.shape[0], 1, img_width, img_width), ndim=4) conv_out = conv.conv2d( input=x, filters=self.W_conv, filter_shape=self.filter_shape, image_shape=None, border_mode=self.border_mode ) pooled_out = pool.pool_2d( input=conv_out, ws=self.pool_size, ignore_border=True ) if self.disable_pooling: pooled_out = conv_out output = self._activation_func(pooled_out + self.B_conv.dimshuffle('x', 0, 'x', 'x')) if self.flatten_output: output = output.flatten(2) return output
Example #17
Source File: test_conv.py From D-VAE with MIT License | 5 votes |
def speed(self): n_calls = 20000 print("n_calls", n_calls) for border_mode in ['valid', 'full']: print() print(border_mode) for openmp in [False, True]: print("OpenMP", openmp) image_shapes = [(1, 5, 6, 6), (10, 5, 6, 6), #(10, 10, 16, 16), #(10, 10, 32, 32) ] print("image_shape", image_shapes) for image_shape in image_shapes: filter_shapes = [(1, 5, 4, 4), (2, 5, 4, 4), (5, 5, 4, 4)] print("filter_shapes", filter_shapes) for filter_shape in filter_shapes: input = theano.shared(numpy.random.random(image_shape)) filters = theano.shared(numpy.random.random(filter_shape)) output = self.conv2d(input, filters, image_shape, filter_shape, border_mode, unroll_patch=True, openmp=openmp) mode = theano.Mode(linker=theano.gof.vm.VM_Linker( allow_gc=False, use_cloop=True)) theano_conv = theano.function([], output, mode=mode) t1 = time.time() theano_conv.fn(n_calls=n_calls) t2 = time.time() print(t2 - t1, end=' ') print()
Example #18
Source File: conv2d.py From TextDetector with GNU General Public License v3.0 | 5 votes |
def lmul(self, x): """ .. todo:: WRITEME """ # dot(x, A) return conv2d( x, self._filters, image_shape=self._img_shape, filter_shape=self._filters_shape, subsample=self._subsample, border_mode=self._border_mode, )
Example #19
Source File: cnn_layers.py From sentence_classification with MIT License | 5 votes |
def encoder(tparams, layer0_input, filter_shape, pool_size, prefix='cnn_encoder'): """ filter_shape: (number of filters, num input feature maps, filter height, filter width) image_shape: (batch_size, num input feature maps, image height, image width) """ conv_out = conv.conv2d(input=layer0_input, filters=tparams[_p(prefix,'W')], filter_shape=filter_shape) conv_out_tanh = tensor.tanh(conv_out + tparams[_p(prefix,'b')].dimshuffle('x', 0, 'x', 'x')) output = pool.pool_2d(input=conv_out_tanh, ds=pool_size, ignore_border=True) return output.flatten(2)
Example #20
Source File: 6_convnet_color.py From theano-tutorial with MIT License | 5 votes |
def model(x, w_c1, b_c1, w_c2, b_c2, w_h3, b_h3, w_o, b_o): c1 = T.maximum(0, conv2d(x, w_c1) + b_c1.dimshuffle('x', 0, 'x', 'x')) p1 = max_pool_2d(c1, (3, 3)) c2 = T.maximum(0, conv2d(p1, w_c2) + b_c2.dimshuffle('x', 0, 'x', 'x')) p2 = max_pool_2d(c2, (2, 2)) p2_flat = p2.flatten(2) h3 = T.maximum(0, T.dot(p2_flat, w_h3) + b_h3) p_y_given_x = T.nnet.softmax(T.dot(h3, w_o) + b_o) return p_y_given_x
Example #21
Source File: 6_convnet.py From theano-tutorial with MIT License | 5 votes |
def model(x, w_c1, b_c1, w_c2, b_c2, w_h3, b_h3, w_o, b_o): c1 = T.maximum(0, conv2d(x, w_c1) + b_c1.dimshuffle('x', 0, 'x', 'x')) p1 = max_pool_2d(c1, (3, 3)) c2 = T.maximum(0, conv2d(p1, w_c2) + b_c2.dimshuffle('x', 0, 'x', 'x')) p2 = max_pool_2d(c2, (2, 2)) p2_flat = p2.flatten(2) h3 = T.maximum(0, T.dot(p2_flat, w_h3) + b_h3) p_y_given_x = T.nnet.softmax(T.dot(h3, w_o) + b_o) return p_y_given_x
Example #22
Source File: convnade.py From NADE with BSD 3-Clause "New" or "Revised" License | 5 votes |
def fprop(self, input, return_output_preactivation=False): conv_out = conv.conv2d(input, filters=self.W, border_mode=self.border_mode) # TODO: Could be faster if pooling was done here instead pre_output = conv_out + self.b.dimshuffle('x', 0, 'x', 'x') output = self.activation_fct(pre_output) if return_output_preactivation: return output, pre_output return output
Example #23
Source File: network3.py From WannaPark with GNU General Public License v3.0 | 5 votes |
def set_inpt(self, inpt, inpt_dropout, mini_batch_size): self.inpt = inpt.reshape(self.image_shape) conv_out = conv.conv2d( input=self.inpt, filters=self.w, filter_shape=self.filter_shape, image_shape=self.image_shape) pooled_out = downsample.max_pool_2d( input=conv_out, ds=self.poolsize, ignore_border=True) self.output = self.activation_fn( pooled_out + self.b.dimshuffle('x', 0, 'x', 'x')) self.output_dropout = self.output # no dropout in the convolutional layers
Example #24
Source File: toolbox.py From Theano-Lights with MIT License | 5 votes |
def deconv(X, w, b=None): # z = dnn_conv(X, w, direction_hint="*not* 'forward!", border_mode=int(np.floor(w.get_value().shape[-1]/2.))) s = int(np.floor(w.get_value().shape[-1]/2.)) z = conv2d(X, w, border_mode='full')[:, :, s:-s, s:-s] if b is not None: z += b.dimshuffle('x', 0, 'x', 'x') return z
Example #25
Source File: test_conv.py From attention-lvcsr with MIT License | 5 votes |
def setUp(self): super(TestConv2D, self).setUp() self.input = T.tensor4('input', dtype=self.dtype) self.input.name = 'default_V' self.filters = T.tensor4('filters', dtype=self.dtype) self.filters.name = 'default_filters' if not conv.imported_scipy_signal and theano.config.cxx == "": raise SkipTest("conv2d tests need SciPy or a c++ compiler")
Example #26
Source File: test_conv.py From attention-lvcsr with MIT License | 5 votes |
def speed(self): n_calls = 20000 print("n_calls", n_calls) for border_mode in ['valid', 'full']: print() print(border_mode) for openmp in [False, True]: print("OpenMP", openmp) image_shapes = [(1, 5, 6, 6), (10, 5, 6, 6), #(10, 10, 16, 16), #(10, 10, 32, 32) ] print("image_shape", image_shapes) for image_shape in image_shapes: filter_shapes = [(1, 5, 4, 4), (2, 5, 4, 4), (5, 5, 4, 4)] print("filter_shapes", filter_shapes) for filter_shape in filter_shapes: input = theano.shared(numpy.random.random(image_shape)) filters = theano.shared(numpy.random.random(filter_shape)) output = self.conv2d(input, filters, image_shape, filter_shape, border_mode, unroll_patch=True, openmp=openmp) mode = theano.Mode(linker=theano.gof.vm.VM_Linker( allow_gc=False, use_cloop=True)) theano_conv = theano.function([], output, mode=mode) t1 = time.time() theano_conv.fn(n_calls=n_calls) t2 = time.time() print(t2 - t1, end=' ') print()
Example #27
Source File: toolbox.py From Theano-Lights with MIT License | 5 votes |
def conv(X, w, b=None): # z = dnn_conv(X, w, border_mode=int(np.floor(w.get_value().shape[-1]/2.))) s = int(np.floor(w.get_value().shape[-1]/2.)) z = conv2d(X, w, border_mode='full')[:, :, s:-s, s:-s] if b is not None: z += b.dimshuffle('x', 0, 'x', 'x') return z
Example #28
Source File: ladder.py From ladder with MIT License | 5 votes |
def f_conv(self, x, spec, in_dim, weight_name): layer_type, dims = spec num_filters = dims[0] filter_size = (dims[1], dims[1]) stride = (dims[2], dims[2]) bm = 'full' if 'convf' in layer_type else 'valid' num_channels = in_dim[0] W = self.weight(self.rand_init_conv( (num_filters, num_channels) + filter_size), weight_name) if stride != (1, 1): f = GpuCorrMM(subsample=stride, border_mode=bm, pad=(0, 0)) y = f(gpu_contiguous(x), gpu_contiguous(W)) else: assert self.p.batch_size == self.p.valid_batch_size y = conv2d(x, W, image_shape=(2*self.p.batch_size, ) + in_dim, filter_shape=((num_filters, num_channels) + filter_size), border_mode=bm) output_size = ((num_filters,) + ConvOp.getOutputShape(in_dim[1:], filter_size, stride, bm)) return y, output_size
Example #29
Source File: layers.py From kaggle-galaxies with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self, input_layer, n_filters, filter_width, filter_height, stride_x, stride_y, weights_std, init_bias_value, nonlinearity=rectify, dropout=0., dropout_tied=False, implementation='convolution'): """ implementation can be: - convolution: use conv2d with the subsample parameter - unstrided: use conv2d + reshaping so the result is a convolution with strides (1, 1) - single_dot: use a large tensor product - many_dots: use a bunch of tensor products """ self.n_filters = n_filters self.filter_width = filter_width self.filter_height = filter_height self.stride_x = stride_x self.stride_y = stride_y self.input_layer = input_layer self.weights_std = np.float32(weights_std) self.init_bias_value = np.float32(init_bias_value) self.nonlinearity = nonlinearity self.dropout = dropout self.dropout_tied = dropout_tied # if this is on, the same dropout mask is applied across the entire input map self.implementation = implementation # this controls whether the convolution is computed using theano's op, # as a bunch of tensor products, or a single stacked tensor product. self.mb_size = self.input_layer.mb_size self.input_shape = self.input_layer.get_output_shape() ' mb_size, n_filters, filter_width, filter_height ' self.filter_shape = (n_filters, self.input_shape[1], filter_width, filter_height) if self.filter_width % self.stride_x != 0: raise RuntimeError("Filter width is not a multiple of the stride in the X direction") if self.filter_height % self.stride_y != 0: raise RuntimeError("Filter height is not a multiple of the stride in the Y direction") self.W = shared_single(4) # theano.shared(np.random.randn(*self.filter_shape).astype(np.float32) * self.weights_std) self.b = shared_single(1) # theano.shared(np.ones(n_filters).astype(np.float32) * self.init_bias_value) self.params = [self.W, self.b] self.bias_params = [self.b] self.reset_params()
Example #30
Source File: conv_net_classes.py From personality-detection with MIT License | 5 votes |
def set_input(self, input): # convolve input feature maps with filters conv_out = conv.conv2d(input=input, filters=self.W,filter_shape=self.filter_shape, image_shape=self.image_shape) if self.non_linear=="tanh": conv_out_tanh = T.tanh(conv_out + self.b.dimshuffle('x', 0, 'x', 'x')) output = downsample.max_pool_2d(input=conv_out_tanh, ds=self.poolsize, ignore_border=True) elif self.non_linear=="relu": conv_out_tanh = ReLU(conv_out + self.b.dimshuffle('x', 0, 'x', 'x')) output = downsample.max_pool_2d(input=conv_out_tanh, ds=self.poolsize, ignore_border=True) else: pooled_out = downsample.max_pool_2d(input=conv_out, ds=self.poolsize, ignore_border=True) output = pooled_out + self.b.dimshuffle('x', 0, 'x', 'x') return output