예제 #1
0
def pretrain_nnet(data_set, n_train_images=100, batch_size=5, learning_rate=0.1):
	print '\n', '#'*50
	print 'starting Greedy Layerwise Unsupervised Pretraining ...'
	layer0 = data_set
	'''
	layer1, params_1 = pretrain_conv_autoencoder(1, layer0, (batch_size, 1, 96, 336), (2, 1, 3, 3), 5, (1, 1), learning_rate)
	dump_params(layer1.params, 'pretrainparams1.pkl')
	dump_params(params_1, 'pretrainparams_1.pkl')
	print '\n'

	layer2, params_2 = pretrain_conv_autoencoder(2, layer1.output, (batch_size, 2, 96, 336), (3, 2, 3, 3), 5, (2, 2), learning_rate)
	dump_params(layer2.params, 'pretrainparams2.pkl')
	dump_params(params_2, 'pretrainparams_2.pkl')
	print '\n'

	layer3, params_3 = pretrain_conv_autoencoder(3, layer2.output, (batch_size, 3, 48, 168), (5, 3, 3, 3), 5, (1, 1), learning_rate)
	dump_params(layer3.params, 'pretrainparams3.pkl')
	dump_params(params_3, 'pretrainparams_3.pkl')
	print '\n'

	layer4, params_4 = pretrain_conv_autoencoder(4, layer3.output, (batch_size, 5, 48, 168), (8, 5, 3, 3), 5, (2, 2), learning_rate)
	dump_params(layer4.params, 'pretrainparams4.pkl')
	dump_params(params_4, 'pretrainparams_4.pkl')
	print '\n'

	layer5, params_5 = pretrain_conv_autoencoder(5, layer4.output, (batch_size, 8, 24, 84), (5, 8, 3, 3), 5, (2, 2), learning_rate)
	dump_params(layer5.params, 'pretrainparams5.pkl')
	dump_params(params_5, 'pretrainparams_5.pkl')
	print '\n'
	'''

	n_pretrained_layers = 5
	n_test = train_set.shape.eval()[0]
	img_shapes = [(n_test, 1, 96, 336), (n_test, 2, 96, 336), (n_test, 3, 48, 168), (n_test, 5, 48, 168), (n_test, 8, 24, 84)]
	k_shapes = [(2, 1, 3, 3), (3, 2, 3, 3), (5, 3, 3, 3), (8, 5, 3, 3), (5, 8, 3, 3)]
	p_shapes = [(1, 1), (2, 2), (1, 1), (2, 2), (2, 2)]
	for i in range(n_pretrained_layers):
		load_file = open('pretrainparams'+str(i+1)+'.pkl')
		W = theano.shared(cPickle.load(load_file), borrow=True)
		b = theano.shared(cPickle.load(load_file), borrow=True)
		layer0 = conv_pool_layer(rng, layer0, k_shapes[i], img_shapes[i], poolsize=p_shapes[i], read_file=True, W_input=W, b_input=b)
		layer5 = layer0
		layer0 = layer0.output
		load_file.close()

	layer6_input = T.reshape(layer5.output, (layer5.output.shape.eval()[0], 5, 504))
	layer6, params_6 = pretrain_local_autoencoders(6, layer6_input, 5, 504, 40, 5, learning_rate)
	dump_params(layer6.params, 'pretrainparams6.pkl')
	dump_params(params_6, 'pretrainparams_6.pkl')
	print '\n'

	layerwise_params = []
	for i in range(6):
		load_file = open('pretrainparams'+str(i+1)+'.pkl')
		W = theano.shared(cPickle.load(load_file), borrow=True)
		b = theano.shared(cPickle.load(load_file), borrow=True)
		layerwise_params.append([W, b])
		load_file.close()

	for i in range(6, 0, -1):
		load_file = open('pretrainparams_'+str(i)+'.pkl')
		W = theano.shared(cPickle.load(load_file), borrow=True)
		b = theano.shared(cPickle.load(load_file), borrow=True)
		layerwise_params.append([W, b])
		load_file.close()

	return layerwise_params
예제 #2
0
파일: model.py 프로젝트: shady-cs15/hdnn
    def __init__(self,
                 rng,
                 input,
                 input_dim,
                 batch_size=5,
                 init=False,
                 params=None):

        # assume input dimensions is 128x128
        self.input = input
        self.inp_h = input_dim[0]
        self.inp_w = input_dim[1]

        self.layer1 = conv_pool_layer(rng,
                                      input=input,
                                      image_shape=(batch_size, 3, self.inp_h,
                                                   self.inp_w),
                                      filter_shape=(64, 3, 3, 3),
                                      poolsize=(2, 2),
                                      zero_pad=True,
                                      read_file=init,
                                      W_input=params[0][0],
                                      b_input=params[0][1])

        # input is 64x64x64
        self.layer2 = conv_pool_layer(rng,
                                      input=self.layer1.output,
                                      image_shape=(batch_size, 64,
                                                   self.inp_h / 2,
                                                   self.inp_w / 2),
                                      filter_shape=(128, 64, 3, 3),
                                      poolsize=(2, 2),
                                      zero_pad=True,
                                      read_file=init,
                                      W_input=params[1][0],
                                      b_input=params[1][1])

        # input is 128x32x32
        self.layer3 = conv_pool_layer(rng,
                                      input=self.layer2.output,
                                      image_shape=(batch_size, 128,
                                                   self.inp_h / 4,
                                                   self.inp_w / 4),
                                      filter_shape=(512, 128, 3, 3),
                                      poolsize=(2, 2),
                                      zero_pad=True,
                                      read_file=init,
                                      W_input=params[2][0],
                                      b_input=params[2][1])

        # input is 512x16x16
        self.layer4 = conv_pool_layer(rng,
                                      input=self.layer3.output,
                                      image_shape=(batch_size, 512,
                                                   self.inp_h / 8,
                                                   self.inp_w / 8),
                                      filter_shape=(1024, 512, 3, 3),
                                      poolsize=(2, 2),
                                      zero_pad=True,
                                      read_file=init,
                                      W_input=params[3][0],
                                      b_input=params[3][1])

        # decovolution starts here
        # input is 1024x8x8
        self.layer5 = deconv_unpool_layer(rng,
                                          input=self.layer4.output,
                                          image_shape=(batch_size, 1024,
                                                       self.inp_h / 16,
                                                       self.inp_w / 16),
                                          filter_shape=(512, 1024, 3, 3),
                                          zero_pad=True,
                                          non_linearity=True,
                                          switch=self.layer4.switch,
                                          unpoolsize=(2, 2),
                                          read_file=init,
                                          W_input=params[4][0],
                                          b_input=params[4][1])

        self.layer6 = deconv_unpool_layer(rng,
                                          input=self.layer5.output,
                                          image_shape=(batch_size, 512,
                                                       self.inp_h / 8,
                                                       self.inp_w / 8),
                                          filter_shape=(128, 512, 3, 3),
                                          zero_pad=True,
                                          non_linearity=True,
                                          switch=self.layer3.switch,
                                          unpoolsize=(2, 2),
                                          read_file=init,
                                          W_input=params[5][0],
                                          b_input=params[5][1])

        self.layer7 = deconv_unpool_layer(rng,
                                          input=self.layer6.output,
                                          image_shape=(batch_size, 128,
                                                       self.inp_h / 4,
                                                       self.inp_w / 4),
                                          filter_shape=(64, 128, 3, 3),
                                          zero_pad=True,
                                          non_linearity=True,
                                          switch=self.layer2.switch,
                                          unpoolsize=(2, 2),
                                          read_file=init,
                                          W_input=params[6][0],
                                          b_input=params[6][1])

        self.layer8 = deconv_unpool_layer(rng,
                                          input=self.layer7.output,
                                          image_shape=(batch_size, 64,
                                                       self.inp_h / 2,
                                                       self.inp_w / 2),
                                          filter_shape=(1, 64, 3, 3),
                                          zero_pad=True,
                                          non_linearity=True,
                                          sigmoid=True,
                                          switch=self.layer1.switch,
                                          unpoolsize=(2, 2),
                                          read_file=init,
                                          W_input=params[7][0],
                                          b_input=params[7][1])
        '''
예제 #3
0
파일: model.py 프로젝트: shady-cs15/LRPR
    def __init__(self, rng, input, input_dim, batch_size=5, init=False, params=None):

        self.input = input
        self.inp_h = input_dim[0]
        self.inp_w = input_dim[1]

        self.layer1 = conv_pool_layer(
            rng,
            input=input,
            image_shape=(batch_size, 1, self.inp_h, self.inp_w),
            filter_shape=(2, 1, 3, 3),
            poolsize=(1, 1),
            zero_pad=True,
            read_file=init,
            W_input=params[0][0],
            b_input=params[0][1],
        )

        self.layer2 = conv_pool_layer(
            rng,
            input=self.layer1.output,
            image_shape=(batch_size, 2, self.inp_h / 1, self.inp_w / 1),
            filter_shape=(3, 2, 3, 3),
            poolsize=(2, 2),
            zero_pad=True,
            read_file=init,
            W_input=params[1][0],
            b_input=params[1][1],
        )

        self.layer3 = conv_pool_layer(
            rng,
            input=self.layer2.output,
            image_shape=(batch_size, 3, (self.inp_h / 1) / 2, (self.inp_w / 1) / 2),
            filter_shape=(5, 3, 3, 3),
            poolsize=(1, 1),
            zero_pad=True,
            read_file=init,
            W_input=params[2][0],
            b_input=params[2][1],
        )

        self.layer4 = conv_pool_layer(
            rng,
            input=self.layer3.output,
            image_shape=(batch_size, 5, (self.inp_h / 2), (self.inp_w) / 2),
            filter_shape=(8, 5, 3, 3),
            poolsize=(2, 2),
            zero_pad=True,
            read_file=init,
            W_input=params[3][0],
            b_input=params[3][1],
        )

        self.layer5 = conv_pool_layer(
            rng,
            input=self.layer4.output,
            image_shape=(batch_size, 8, (self.inp_h / 2) / 2, (self.inp_w / 2) / 2),
            filter_shape=(5, 8, 3, 3),
            poolsize=(2, 2),
            zero_pad=True,
            read_file=init,
            W_input=params[4][0],
            b_input=params[4][1],
        )

        # layer 6 is the embedding
        n_feature_maps = 5
        # embedding space input: batch_size x 5 x linearised vector(504)
        # embedding space o/p: batch_size x 5 x 40
        embedding_input = T.reshape(self.layer5.output, (batch_size, n_feature_maps, (12 * 42)))

        self.layer6 = hidden_layer(
            rng,
            input=embedding_input,
            n_feature_maps=n_feature_maps,
            n_in=504,
            n_out=40,
            b_size=batch_size,
            read_file=init,
            W=params[5][0],
            b=params[5][1],
        )

        # layer 7 i/p: batch_size x 5 x 40
        # layer 7 o/p: batch_size x 5 x linearised vector(504)
        # before passing it to layer8 reformat it into batch_size x 5 x (row x col)
        self.layer7 = hidden_layer(
            rng,
            input=self.layer6.output,
            n_feature_maps=n_feature_maps,
            n_in=40,
            n_out=504,
            b_size=batch_size,
            read_file=init,
            W=params[6][0],
            b=params[6][1],
        )
        embedding_output = T.reshape(self.layer7.output, (batch_size, n_feature_maps, 12, 42))

        self.layer8 = deconv_unpool_layer(
            rng,
            input=embedding_output,  # self.layer5.output,
            image_shape=(batch_size, 5, ((self.inp_h / 2) / 2) / 2, ((self.inp_w / 2) / 2) / 2),
            filter_shape=(8, 5, 3, 3),
            unpoolsize=(2, 2),
            zero_pad=True,
            non_linearity=True,
            switch=self.layer5.switch,
            read_file=init,
            W_input=params[7][0],
            b_input=params[7][1],
        )

        self.layer9 = deconv_unpool_layer(
            rng,
            input=self.layer8.output,
            image_shape=(batch_size, 8, (self.inp_h / 2) / 2, (self.inp_w / 2) / 2),
            filter_shape=(5, 8, 3, 3),
            unpoolsize=(2, 2),
            zero_pad=True,
            non_linearity=True,
            switch=self.layer4.switch,
            read_file=init,
            W_input=params[8][0],
            b_input=params[8][1],
        )

        self.layer10 = deconv_unpool_layer(
            rng,
            input=self.layer9.output,
            image_shape=(batch_size, 5, self.inp_h / 2, self.inp_w / 2),
            filter_shape=(3, 5, 3, 3),
            unpoolsize=(1, 1),
            switch=None,
            non_linearity=True,
            read_file=init,
            W_input=params[9][0],
            b_input=params[9][1],
        )

        self.layer11 = deconv_unpool_layer(
            rng,
            input=self.layer10.output,
            image_shape=(batch_size, 3, self.inp_h / 2, self.inp_w / 2),
            filter_shape=(2, 3, 3, 3),
            non_linearity=True,
            unpoolsize=(2, 2),
            switch=self.layer2.switch,
            read_file=init,
            W_input=params[10][0],
            b_input=params[10][1],
        )

        self.layer12 = deconv_unpool_layer(
            rng,
            input=self.layer11.output,
            image_shape=(batch_size, 2, self.inp_h, self.inp_w),
            filter_shape=(1, 2, 3, 3),
            unpoolsize=(1, 1),
            switch=None,
            read_file=init,
            W_input=params[11][0],
            b_input=params[11][1],
        )