def testBurstColumns(self): tm = TemporalMemory( layer=Layer(numCellsPerColumn=4), connectedPermanence=0.50, minThreshold=1, seed=42 ) segment1 = tm.layer.columns[0].cells[0].createSegment() segment1.createSynapse(presynapticCell=tm.layer.columns[5].cells[3], permanence=0.6) segment1.createSynapse(presynapticCell=tm.layer.columns[9].cells[1], permanence=0.4) segment1.createSynapse(presynapticCell=tm.layer.columns[119].cells[1], permanence=0.9) segment2 = tm.layer.columns[0].cells[0].createSegment() segment2.createSynapse(presynapticCell=tm.layer.columns[12].cells[1], permanence=0.9) segment2.createSynapse(presynapticCell=tm.layer.columns[0].cells[3], permanence=0.8) segment3 = tm.layer.columns[0].cells[1].createSegment() segment3.createSynapse(presynapticCell=tm.layer.columns[183].cells[1], permanence=0.7) segment4 = tm.layer.columns[27].cells[0].createSegment() segment4.createSynapse(presynapticCell=tm.layer.columns[121].cells[2], permanence=0.9) activeColumns = set([tm.layer.columns[0], tm.layer.columns[1], tm.layer.columns[26]]) predictedColumns = set([tm.layer.columns[26]]) prevActiveCells = set([tm.layer.columns[5].cells[3], tm.layer.columns[9].cells[1], tm.layer.columns[12].cells[1], tm.layer.columns[183].cells[1]]) prevWinnerCells = set([tm.layer.columns[5].cells[3], tm.layer.columns[9].cells[1], tm.layer.columns[12].cells[1], tm.layer.columns[183].cells[1]]) (activeCells, winnerCells, learningSegments) = tm.burstColumns(activeColumns, predictedColumns, prevActiveCells, prevWinnerCells) # 5 is the new segment was added to winner cell (6) in column 1 segment5 = list(tm.layer.columns[1].cells[2].segments)[0] self.assertEqual(activeCells, set([tm.layer.columns[0].cells[0], tm.layer.columns[0].cells[1], tm.layer.columns[0].cells[2], tm.layer.columns[0].cells[3], tm.layer.columns[1].cells[0], tm.layer.columns[1].cells[1], tm.layer.columns[1].cells[2], tm.layer.columns[1].cells[3]])) self.assertEqual(winnerCells, set([tm.layer.columns[0].cells[0], tm.layer.columns[1].cells[2]])) # 6 is randomly chosen cell self.assertEqual(learningSegments, set([segment1, segment5]))
def testBurstColumnsEmpty(self): tm = TemporalMemory() activeColumns = set() predictedColumns = set() prevActiveCells = set() prevWinnerCells = set() (activeCells, winnerCells, learningSegments) = tm.burstColumns(activeColumns, predictedColumns, prevActiveCells, prevWinnerCells) self.assertEqual(activeCells, set()) self.assertEqual(winnerCells, set()) self.assertEqual(learningSegments, set())