def reset(self, params, repetition):
    random.seed(params['seed'])

    if params['dataset'] == 'simple':
      self.dataset = SimpleDataset()
    elif params['dataset'] == 'reber':
      self.dataset = ReberDataset(maxLength=params['max_length'])
    elif params['dataset'] == 'high-order':
      self.dataset = HighOrderDataset(numPredictions=params['num_predictions'],
                                      seed=params['seed'])
      print "Sequence dataset: "
      print " Symbol Number {}".format(self.dataset.numSymbols)
      for seq in self.dataset.sequences:
        print seq

    elif params['dataset'] == 'high-order-long':
      self.dataset = LongHighOrderDataset(params['sequence_length'],
                                          seed=params['seed'])
      print "Sequence dataset: "
      print " Symbol Number {}".format(self.dataset.numSymbols)
      for seq in self.dataset.sequences:
        print seq
    else:
      raise Exception("Dataset not found")

    self.randomStart = self.dataset.numSymbols + 1
    self.randomEnd = self.randomStart + 5000

    MODEL_PARAMS['modelParams']['sensorParams']['encoders']['element']\
      ['categoryList'] = range(self.randomEnd)

    # if not os.path.exists(resultsDir):
    #   os.makedirs(resultsDir)
    # self.resultsFile = open(os.path.join(resultsDir, "0.log"), 'w')
    if params['verbosity'] > 0:
      print " initializing HTM model..."
    self.model = ModelFactory.create(MODEL_PARAMS)
    self.model.enableInference({"predictedField": "element"})
    # self.classifier = SDRClassifier(steps=[1], alpha=0.001)

    self.mapping = getEncoderMapping(self.model, self.dataset.numSymbols)

    self.numPredictedActiveCells = []
    self.numPredictedInactiveCells = []
    self.numUnpredictedActiveColumns = []

    self.currentSequence = []
    self.targetPrediction = []
    self.replenish_sequence(params, iteration=0)

    self.resets = []
    self.randoms = []
    self.verbosity = 1
    self.sequenceCounter = 0
Example #2
0
    def reset(self, params, repetition):
        random.seed(params['seed'])

        if params['dataset'] == 'simple':
            self.dataset = SimpleDataset()
        elif params['dataset'] == 'reber':
            self.dataset = ReberDataset(maxLength=params['max_length'])
        elif params['dataset'] == 'high-order':
            self.dataset = HighOrderDataset(
                numPredictions=params['num_predictions'],
                seed=params['seed'],
                smallAlphabet=params['use_small_alphabet'])
            print "Sequence dataset: "
            print " Symbol Number {}".format(self.dataset.numSymbols)
            for seq in self.dataset.sequences:
                print seq

        elif params['dataset'] == 'high-order-long':
            self.dataset = LongHighOrderDataset(params['sequence_length'],
                                                seed=params['seed'])
            print "Sequence dataset: "
            print " Symbol Number {}".format(self.dataset.numSymbols)
            for seq in self.dataset.sequences:
                print seq
        else:
            raise Exception("Dataset not found")

        self.randomStart = self.dataset.numSymbols + 1
        self.randomEnd = self.randomStart + 5000

        MODEL_PARAMS['modelParams']['sensorParams']['encoders']['element']\
          ['categoryList'] = range(self.randomEnd)

        # if not os.path.exists(resultsDir):
        #   os.makedirs(resultsDir)
        # self.resultsFile = open(os.path.join(resultsDir, "0.log"), 'w')
        if params['verbosity'] > 0:
            print " initializing HTM model..."
            # print MODEL_PARAMS
        self.model = ModelFactory.create(MODEL_PARAMS)
        self.model.enableInference({"predictedField": "element"})
        # self.classifier = SDRClassifier(steps=[1], alpha=0.001)
        print "finish initializing HTM model "

        if params['kill_cell_percent'] > 0:
            # a hack to use faulty temporal memory instead
            self.model._getTPRegion().getSelf()._tfdr = MonitoredFaultyTPShim(
                numberOfCols=2048,
                cellsPerColumn=32,
                newSynapseCount=32,
                maxSynapsesPerSegment=128,
                maxSegmentsPerCell=128,
                initialPerm=0.21,
                connectedPerm=0.50,
                permanenceInc=0.10,
                permanenceDec=0.10,
                predictedSegmentDecrement=0.01,
                minThreshold=15,
                activationThreshold=15,
                seed=1960,
            )

        self.mapping = getEncoderMapping(self.model, self.dataset.numSymbols)

        self.numPredictedActiveCells = []
        self.numPredictedInactiveCells = []
        self.numUnpredictedActiveColumns = []

        self.currentSequence = []
        self.targetPrediction = []
        self.replenish_sequence(params, iteration=0)

        self.resets = []
        self.randoms = []
        self.verbosity = 1
        self.sequenceCounter = 0