def test_convolutional(): x = tensor.tensor4("x") num_channels = 4 num_filters = 3 batch_size = 5 filter_size = (3, 3) conv = Convolutional( filter_size, num_filters, num_channels, image_size=(17, 13), weights_init=Constant(1.0), biases_init=Constant(5.0), ) conv.initialize() y = conv.apply(x) func = function([x], y) x_val = numpy.ones((batch_size, num_channels, 17, 13), dtype=theano.config.floatX) assert_allclose( func(x_val), numpy.prod(filter_size) * num_channels * numpy.ones((batch_size, num_filters, 15, 11)) + 5 ) conv.image_size = (17, 13) conv.batch_size = 2 # This should have effect on get_dim assert conv.get_dim("output") == (num_filters, 15, 11)
def conv_layer(self, name, wt, bias, image_size): """Creates a Convolutional brick with the given name, weights, bias, and image_size.""" layer = Convolutional( name=name, filter_size=wt.shape[0:2], num_channels=wt.shape[2], # in num_filters=wt.shape[3], # out weights_init=Constant(0), # does not matter biases_init=Constant(0), # does not matter tied_biases=True, border_mode='valid', ) if image_size: layer.image_size = image_size layer.initialize() weights = self.to_bc01(wt) layer.parameters[0].set_value(weights.astype("float32")) # W layer.parameters[1].set_value(bias.squeeze().astype("float32")) # b return (layer, layer.get_dim("output")[1:3])
def test_convolutional(): x = tensor.tensor4('x') num_channels = 4 num_filters = 3 batch_size = 5 filter_size = (3, 3) conv = Convolutional(filter_size, num_filters, num_channels, image_size=(17, 13), weights_init=Constant(1.), biases_init=Constant(5.)) conv.initialize() y = conv.apply(x) func = function([x], y) x_val = numpy.ones((batch_size, num_channels, 17, 13), dtype=theano.config.floatX) assert_allclose( func(x_val), numpy.prod(filter_size) * num_channels * numpy.ones( (batch_size, num_filters, 15, 11)) + 5) conv.image_size = (17, 13) conv.batch_size = 2 # This should have effect on get_dim assert conv.get_dim('output') == (num_filters, 15, 11)
def conv_layer(self, name, wt, bias, image_size): """Creates a Convolutional brick with the given name, weights, bias, and image_size.""" layer = Convolutional( name=name, filter_size=wt.shape[0:2], num_channels=wt.shape[2], # in num_filters=wt.shape[3], # out weights_init=Constant(0), # does not matter biases_init=Constant(0), # does not matter tied_biases=True, border_mode="valid", ) if image_size: layer.image_size = image_size layer.initialize() weights = self.to_bc01(wt) layer.parameters[0].set_value(weights.astype("float32")) # W layer.parameters[1].set_value(bias.squeeze().astype("float32")) # b return (layer, layer.get_dim("output")[1:3])