예제 #1
0
    def testAggregation(self):
        seg = Segment()
        self.assertFalse(seg.active)

        firing = Mock({'is_firing': True})
        off = Mock({'is_firing': False})

        seg.add_synapse(off)
        self.assertFalse(seg.active)

        onRequired = int(FRACTION_SEGMENT_ACTIVATION_THRESHOLD * 100)
        offRequired = 99 - onRequired

        #this isn't a hard requirement, just a limitation of the test
        assert (onRequired >= 2)

        for _ in xrange(offRequired):
            seg.add_synapse(off)

        self.assertFalse(seg.active)

        for _ in xrange(onRequired - 1):
            seg.add_synapse(firing)

        self.assertFalse(seg.active)

        seg.add_synapse(firing)

        self.assert_(seg.active)
예제 #2
0
 def __init__(self, htm, x, y, cellsPerColumn):
     '''
     
     '''
     self.htm = htm
     self.cells = [Cell(self, i) for i in xrange(cellsPerColumn)]
     self.overlap = 0
     #synapses on input/proximal dendrites, forced equal for whole column, in equivalent of single segment
     self.segment = Segment(distal=False)
     self.boost = 1
     self.x = x
     self.y = y
     self.dutyCycleMin = 0
     self.dutyCycleActive = 0
     self.dutyCycleOverlap = 0
     self.active = False
예제 #3
0
파일: cell.py 프로젝트: Sandy4321/pyHTM-1
    def __init__(self, column=None, layer=None):
        '''
        @param layer the inner layer of the cell, so an HTM with 3 cells per column
            would have cells with layers 0, 1 and 2
        '''
        self.column = column
        self.layer = layer

        self.active = False
        self.__wasActive = False  #read-only
        self.predicting = False
        self.__predicted = False  #read-only
        self.learning = False
        self.__wasLearning = False  #read-only
        self.predictingNext = None  #cached-val
        self.__predictedNext = False  #read-only

        self.segments = [Segment() for i in xrange(SEGMENTS_PER_CELL)]
예제 #4
0
파일: cell.py 프로젝트: Sandy4321/pyHTM-1
    def create_segment(self, htm, nextStep):
        '''
        @param htm: the htm network that contains the cell
        @param nextStep: boolean for whether this segment indicates predicted 
            firing in the very next time step 
        '''
        seg = Segment(nextStep=nextStep)

        #randomly choose input cells, from active non-self cells
        synapseLen = self.__createSynapses(seg, htm.cells,
                                           SYNAPSES_PER_SEGMENT,
                                           lambda c: c.wasLearning)

        if not nextStep and synapseLen < SYNAPSES_PER_SEGMENT:
            addSynapseLen = SYNAPSES_PER_SEGMENT - synapseLen
            activeSynapseLen = self.__createSynapses(seg, htm.cells,
                                                     addSynapseLen,
                                                     lambda c: c.wasActive)

        self.segments.append(seg)

        return seg
예제 #5
0
    def testAdaptation(self):
        seg = Segment()

        #for now, just don't crash
        seg.adapt_up([])
        seg.adapt_down([])