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
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
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