Ejemplo n.º 1
0
    def __init__(self, LABS, LAYER_PARAMS):

        assert LAYER_PARAMS['input_shape_w'] > LAYER_PARAMS['layer_num_hidd']
        H = LAYER_PARAMS['input_shape_h']
        W = LAYER_PARAMS['input_shape_w']
        WEIGHT_SHAPE = LAYER_PARAMS['w_shape']
        HIDD_SHAPE = LAYER_PARAMS['h_shape']
        BIN_SHAPE = LAYER_PARAMS['bin_shape']
        BOUT_SHAPE = LAYER_PARAMS['bout_shape']
        NUM_HIDD = LAYER_PARAMS['layer_num_hidd']
        NOISE_LEVEL = LAYER_PARAMS['layer_base_noise']
        self.IS_LAST_LAY = LAYER_PARAMS['is_last_lay']
        
        if LABS is not None:
            self.LINDS = labin().fit_transform(LABS)
            self.LABS = LABS
        else:
            self.LABS = np.zeros((H, 1))
            self.LINDS = labin().fit_transform(self.LABS)

        T_WEIGHT = np.random.randint(-1000, 1000, WEIGHT_SHAPE).astype(np.float32)
        self.WEIGHT = (T_WEIGHT / np.sum(T_WEIGHT)) + \
                         (np.random.randn(WEIGHT_SHAPE[0],
                                WEIGHT_SHAPE[1]) * NOISE_LEVEL)
        self.B_IN = np.zeros(BIN_SHAPE, dtype=np.float32, order='c')
        self.B_OUT = np.zeros(BOUT_SHAPE, dtype=np.float32, order='c')
        self.DROP_WEIGHT = np.ones(WEIGHT_SHAPE, dtype=np.int32, order='c')
        self.OLD_DW = np.zeros(WEIGHT_SHAPE, dtype=np.float32, order='c')
        self.IN1 = np.zeros(WEIGHT_SHAPE, dtype=np.float32, order='c')
        self.IN2 = np.zeros((H, W), dtype=np.float32, order='c')
        
        self.TUNE_HELPER = {'I'     : None,
                            'H'     : None,
                            'O'     : None,
                            'ERR'   : None,
                            'OLD_I' : None,
                            'OLD_O' : None,
                            'W_UPD' : (None, None)}
        
        self.DELTA_H2O = None
        self.DELTA_I2H = None
        self.DELTA = None
        self.ID_NUM = LAYER_PARAMS['id']
        self.VERB = LAYER_PARAMS['verbose']
        self.LAYER_PARAMS = LAYER_PARAMS
        self.CONFIG_LOADED = True
        
        if self.LAYER_PARAMS['per_init_to_zero'] > 0:
            NUM_ZERO = int(np.floor(np.size(self.WEIGHT) * 
                          self.LAYER_PARAMS['per_init_to_zero']))
            for i in xrange(NUM_ZERO):
                x = np.random.randint(0, np.size(self.WEIGHT, 0))
                y = np.random.randint(0, np.size(self.WEIGHT, 1))
                self.WEIGHT[x, y] = 0.0
Ejemplo n.º 2
0
    def __init__(self, IN_DIMS, LABS, PARAMS, verbose):

        self.METRIC_PARAMS= PARAMS
        self.NUM_CENTS = self.METRIC_PARAMS['num_classes']
        self.CLUSTER = np.zeros((self.NUM_CENTS, IN_DIMS[1]))
        self.LINSD = labin().fit_transform(LABS)
        self.LABS = LABS
Ejemplo n.º 3
0
    def __init__(self, INPUT, LABS, NUM_HIDD, LAYER_PARAMS,
                 ID, NOISE_LEVEL, verbose = False):


        if NUM_HIDD >= np.size(INPUT, 1):
            raise IndexError, 'Number of hidden elements should be less that Input elements'

        self.LAYER_PARAMS = LAYER_PARAMS
        self.I_WIDTH = np.size(INPUT, 1)
        self.I_HEIGHT = np.size(INPUT, 0)
        self.ID_NUM = ID
        if LABS is not None:

            self.LINDS = labin().fit_transform(LABS)
            self.LABS = LABS
        else:
            self.LABS = np.zeros((np.size(INPUT, 0), 1))
            self.LINDS = labin().fit_transform(self.LABS)

        self.WEIGHT = np.random.randint(-100, 100,
                                        (self.I_WIDTH, NUM_HIDD)) * NOISE_LEVEL
        self.B_IN = np.zeros((1, NUM_HIDD), dtype = np.float32, order ='c')
        self.B_OUT = np.zeros((1, self.I_WIDTH), dtype = np.float32, order=c')
        self.DROP_WEIGHT = np.ones(np.shape(self.WEIGHT),
                                                  dtype = np.int32, order ='c')
        self.OLD_DW = np.zeros(np.shape(self.WEIGHT),
                                               dtype = np.float32, order ='c')
        self.IN1 = np.zeros((np.size(INPUT,0), np.size(self.WEIGHT, 1)),
                                               dtype = np.float32, order = 'c')
        self.IN2 = np.zeros(INPUT.shape, dtype = np.float32, order = 'c')

        self.DELTA = None



        if self.LAYER_PARAMS['per_init_to_zero'] > 0:
            NUM_ZERO = int(np.floor(np.size(self.WEIGHT) * self.LAYER_PARAMS['per_init_to_zero']))

            for i in range(NUM_ZERO):
                x = np.random.randint(0, np.size(self.WEIGHT, 0))
                y = np.random.randint(0, np.size(self.WEIGHT, 1))
                self.WEIGHT[x, y] = 0.0

        self.VERB = verbose
        self.CONFIG_LOADED = True