Ejemplo n.º 1
0
    def __init__(self,
                 numpy_rng=None,
                 theano_rng=None,
                 conv_layer_configs=[],
                 non_maximum_erasing=False,
                 use_fast=False):

        self.conv_layers = []
        if not theano_rng:
            theano_rng = RandomStreams(numpy_rng.randint(2**30))
        # allocate symbolic variables for the data
        self.x = T.tensor4('x')

        self.conv_layer_num = len(conv_layer_configs)
        for i in xrange(self.conv_layer_num):
            if i == 0:
                input = self.x
            else:
                input = self.conv_layers[-1].output
            config = conv_layer_configs[i]
            conv_layer = ConvLayerForward(numpy_rng=numpy_rng,
                                          input=input,
                                          filter_shape=config['filter_shape'],
                                          poolsize=config['poolsize'],
                                          activation=config['activation'],
                                          flatten=config['flatten'],
                                          use_fast=use_fast)
            self.conv_layers.append(conv_layer)
Ejemplo n.º 2
0
    def __init__(self,
                 numpy_rng=None,
                 theano_rng=None,
                 cfg=[],
                 non_maximum_erasing=False,
                 use_fast=False):

        self.conv_layers = []
        self.n_outs = cfg.n_outs
        self.layers = []
        self.extra_layers = []
        self.conv_layer_num = len(cfg.conv_layer_configs)
        self.dnn_layer_num = len(cfg.hidden_layers_sizes)
        self.extra_layers_sizes = cfg.extra_layers_sizes

        self.x = T.tensor4('x')
        self.extra_x = T.matrix('extra_x')

        for i in xrange(self.conv_layer_num):
            if i == 0:
                input = self.x
            else:
                input = self.conv_layers[-1].output
            config = cfg.conv_layer_configs[i]
            print config['filter_shape']
            conv_layer = ConvLayerForward(numpy_rng=numpy_rng,
                                          input=input,
                                          filter_shape=config['filter_shape'],
                                          poolsize=config['poolsize'],
                                          activation=config['activation'],
                                          flatten=config['flatten'],
                                          use_fast=use_fast)
            self.layers.append(conv_layer)
            self.conv_layers.append(conv_layer)
        self.conv_output_dim = config['output_shape'][1] * config[
            'output_shape'][2] * config['output_shape'][3]
        cfg.n_ins = config['output_shape'][1] * config['output_shape'][
            2] * config['output_shape'][3]

        print self.conv_output_dim
        print cfg.n_ins
        print 'Extra input dimension: ' + str(cfg.extra_dim)
        for i in xrange(len(self.extra_layers_sizes)):
            if i == 0:
                input_size = cfg.extra_dim
                layer_input = self.extra_x
            else:
                input_size = self.extra_layers_sizes[i - 1]
                layer_input = self.extra_layers[-1].output
            W = None
            b = None
            attend_layer = HiddenLayer(rng=numpy_rng,
                                       input=layer_input,
                                       n_in=input_size,
                                       n_out=self.extra_layers_sizes[i],
                                       W=W,
                                       b=b)
            self.extra_layers.append(attend_layer)
        self.extra_output = self.extra_layers[-1].output
        self.extra_output = T.nnet.softmax(self.extra_layers[-1].output)

        print 'layer num: ' + str(len(self.layers) - 1)
        for i in xrange(self.dnn_layer_num):
            if i == 0:
                # 1. Join two features (magnitude + phase)
                input_size = self.conv_output_dim + self.extra_layers_sizes[-1]
                layer_input = T.join(1, self.layers[-1].output,
                                     self.extra_output)
                # 2. Weighted Sum (magnitude * phase)
                #input_size = self.conv_output_dim
                #layer_input = self.layers[-1].output * self.extra_output
            else:
                input_size = cfg.hidden_layers_sizes[i - 1]
                layer_input = self.layers[-1].output
            W = None
            b = None
            hidden_layer = HiddenLayer(rng=numpy_rng,
                                       input=layer_input,
                                       n_in=input_size,
                                       n_out=cfg.hidden_layers_sizes[i],
                                       W=W,
                                       b=b)
            self.layers.append(hidden_layer)

        print 'layer num: ' + str(len(self.layers) - 1)
        logLayer = OutputLayer(input=self.layers[-1].output,
                               n_in=cfg.hidden_layers_sizes[-1],
                               n_out=self.n_outs)
        self.layers.append(logLayer)
        print 'layer num: ' + str(len(self.layers) - 1)
Ejemplo n.º 3
0
    def __init__(self,
                 numpy_rng=None,
                 theano_rng=None,
                 cfg=None,
                 non_maximum_erasing=False,
                 use_fast=False):

        self.n_outs = cfg.n_outs
        self.layers = []
        self.extra_layers = []
        self.conv_layer_num = len(cfg.conv_layer_configs)
        self.dnn_layer_num = len(cfg.hidden_layers_sizes)
        self.extra_layers_sizes = cfg.extra_layers_sizes

        self.x = T.tensor4('x')
        self.extra_x = T.matrix('extra_x')

        for i in xrange(self.conv_layer_num):
            if i == 0:
                input = self.x
            else:
                input = self.layers[-1].output
            config = cfg.conv_layer_configs[i]
            conv_layer = ConvLayerForward(numpy_rng=numpy_rng,
                                          input=input,
                                          filter_shape=config['filter_shape'],
                                          poolsize=config['poolsize'],
                                          activation=config['activation'],
                                          flatten=config['flatten'],
                                          use_fast=use_fast)
            self.layers.append(conv_layer)

        self.conv_output_dim = config['output_shape'][1] * config[
            'output_shape'][2] * config['output_shape'][3]
        cfg.n_ins = config['output_shape'][1] * config['output_shape'][
            2] * config['output_shape'][3]

        for i in xrange(len(self.extra_layers_sizes)):
            if i == 0:
                input_size = 6400 * 5
                input_size = cfg.extra_dim
                layer_input = self.extra_x
            else:
                input_size = self.extra_layers_sizes[i - 1]
                layer_input = self.extra_layers[-1].output
            W = None
            b = None
            attend_layer = HiddenLayer(rng=numpy_rng,
                                       input=layer_input,
                                       n_in=input_size,
                                       n_out=self.extra_layers_sizes[i],
                                       W=W,
                                       b=b)
            self.extra_layers.append(attend_layer)

        self.extra_layers[-1].att_e_tl = self.extra_layers[-1].output
        self.extra_layers[-1].att_a_tl = T.nnet.softmax(
            self.extra_layers[-1].att_e_tl)
        #self.extra_layers[-1].att_a_tl = T.exp(self.extra_layers[-1].att_e_tl)/(T.exp(self.extra_layers[-1].att_e_tl)).sum(0,keepdims=True)

        for i in xrange(self.dnn_layer_num):
            if i == 0:
                #input_size = self.conv_output_dim
                #layer_input = (self.extra_layers[-1].att_a_tl*self.layers[-1].output)
                input_size = self.conv_output_dim + self.extra_layers_sizes[-1]
                layer_input = T.join(1, self.extra_layers[-1].att_a_tl,
                                     self.layers[-1].output)
            else:
                input_size = cfg.hidden_layers_sizes[i - 1]
                layer_input = self.layers[-1].output
            W = None
            b = None
            hidden_layer = HiddenLayer(rng=numpy_rng,
                                       input=layer_input,
                                       n_in=input_size,
                                       n_out=cfg.hidden_layers_sizes[i],
                                       W=W,
                                       b=b)
            self.layers.append(hidden_layer)

        logLayer = OutputLayer(input=self.layers[-1].output,
                               n_in=cfg.hidden_layers_sizes[-1],
                               n_out=self.n_outs)
        self.layers.append(logLayer)