def __init__(self, params=None, debug=False): """ Args: params: dict with parameters for spatial and temporal poolers debug: whether to print debug messages """ params = utils.fill_default_params(params, default_params) self.debug = debug assert(params['maxCoincidenceCount'] > params['requestedGroupsCount']) if params['spatialPoolerAlgorithm'] == 'gaussian': assert(params['sigma'] >= 0) assert(params['maxDistance'] >= 0) self.sp = SpatialPooler( algorithm=params['spatialPoolerAlgorithm'], max_distance=params['maxDistance'], sigma=params['sigma'], max_coincidence_count=params['maxCoincidenceCount'], rare_coincidence_threshold=params['rareCoincidenceThreshold'], ignore_background_pattern=params['ignoreBackgroundPattern'], background_color=params['backgroundColor'], debug=self.debug ) self.tp = TemporalPooler( algorithm=params['temporalPoolerAlgorithm'], transition_memory=params['transitionMemory'], requested_group_count=params['requestedGroupsCount'], symmetrizeTAM=params['symmetrizeTAM'], debug=self.debug ) self.tp_first_run = True self.y = None # spatial inference in fw direction self.fw_mesage = None # forward output of the node