def testCount(): rows = 5 cols = 5 coverage = 20 numbits = 10 numRounds = 500 trainingRounds = numRounds / 4 originalInputVector = InputVector(numbits) inputVector = InputVector(0) pred = dict() #repeat several times to increase activity: for i in range(3): inputVector.extendVector(originalInputVector) desiredLocalActivity = DESIRED_LOCAL_ACTIVITY r = Region(rows, cols, inputVector, coverage, desiredLocalActivity) outputVector = r.getOutputVector() correctBitPredctions = 0 for round in range(numRounds): #print("Round: " + str(round)) # if (round % 2 == 0): # val = 682 # else: # val = 341 val = round % 30 setInput(originalInputVector, val) inputString = inputVector.toString() outputString = outputVector.toString() # for bit in inputVector.getVector(): # printBit(bit) # print('') # print(inputString) if outputString in pred: curPredString = pred[outputString] else: curPredString = "[New input]" pred[outputString] = inputString printStats(inputString, curPredString) if (round > trainingRounds): correctBitPredctions += stringOverlap(curPredString, pred[outputString]) r.doRound() printColumnStats(r) for key in pred: print("key: " + key + " pred: " + pred[key]) print("Accuracy: " + str( float(correctBitPredctions) / float((30 * (numRounds - trainingRounds)))))
def mapRegionToOutputVector(self): self.outputVector = InputVector(0) for c in self.columns: self.outputVector.extendVector(c.getOutputBits())
def getOutputBits(self): outputBits = InputVector(0) for cell in self.cells: outputBits.appendBit(cell.getOutputBit()) return outputBits